Tag: exception

Java如何从try,catch和最后返回一个值?

因此,当我在“try {}”中执行块代码时,我尝试返回一个值,它会出现“无返回值”。 这是我使用的代码,代表我的问题。 import org.w3c.dom.ranges.RangeException; public class Pg257E5 { public static void main(String[]args) { try { System.out.println(add(args)); } catch(RangeException e) { e.printStackTrace(); } finally { System.out.println(“Thanks for using the program kiddo!”); } } public static double add(String[] values) // shows a commpile error here that I don’t have a return value { try { int […]

在Exception上转储变量的状态

我想知道是否有一种方法可以在出现exception时转储所有局部变量的状态,以便更好地了解导致exception的环境状态。 变量idsToDump下面在运行时是未知的,我想找出集合中的值导致NPE的状态。 例: public static void main(String[] args) { HashMap employees = new HashMap(); employees.put(1, “James”); Integer[] idsToDump = new Integer[] { 1, 2, 3 }; for (Integer employeeId : idsToDump) { String name = employees.get(employeeId).toLowerCase(); System.out.println(name + ” is employee number: ” + employeeId); } } 输出: james is employee number: 1 Exception in […]

iText Java签名PDF DocumentException:空间不足

我正在使用iText 5.5.5 for Java,我想创建带有外部签名的签名PDF,如下所示: 获取应签名的PDF文档并使用空签名创建PDF并提供BASE64编码的字节以由外部签名机制签名: PdfReader reader = new PdfReader(src); FileOutputStream os = new FileOutputStream(dest); PdfStamper stamper = PdfStamper.createSignature(reader, os, ‘\0’); PdfSignatureAppearance appearance = stamper.getSignatureAppearance(); appearance.setVisibleSignature(new Rectangle(36, 748, 144, 780), 1, “test”); appearance.setCertificate(chain[1]); ExternalSignatureContainer external = new ExternalBlankSignatureContainer(PdfName.ADOBE_PPKLITE, PdfName.ADBE_PKCS7_DETACHED); MakeSignature.signExternalContainer(appearance, external, 8192); InputStream is = appearance.getRangeStream(); byte[] toSign = getBytes(is); this.b64String = new String(Base64.encode(toSign)); 使用外部签名机制签署b64String […]

论断言和例外; Java的

在这个特定的场景中,断言比exception更合适吗? 据我所知,当程序FUBAR达到无法恢复并退出的程度时,应使用assert。 我还被告知要始终抛出exception以便清晰和错误消息处理。 每次使用时间之间是否存在细微差别? 有没有一个例子,必须无条件地使用断言代替例外? public void subscribe(DataConsumer c) throws IllegalArgumentException { if (c == null) { // Almost certainly FUBAR throw new IllegalArgumentException(“Can’t subscribe null as a DataConsumer. Object not initialized”); } if (dataConsumerList == null) { // Definetely FUBAR throw new IllegalArgumentException(“Nothing to subscribe to. DataConsumerList is null”); } dataConsumerList.add(c); }

为什么UmbrellaException有这个名字?

我正在使用GWT,有时候我得到了一个名为UmbrellaException的exception我一直在想为什么会这样调用? 这是因为你必须保护应用程序有很多错误(下雨)(使用雨伞不要弄湿)。

你能弄清楚为什么这个程序会触发IllegalStateException吗?

〜/ Cipher / nsdl / crypto中的所有文件都可以在这里找到用gcj编译的java文件,参见compile.sh nmint@nqmk-mint ~/Cipher/nsdl/crypto $ echo test | ./cryptTest encrypt deadbeefdeadbeefdeadbeefdeadbeef deadbeef Blowfish CBC > test null Exception in thread “main” java.lang.IllegalStateException: cipher is not for encrypting or decrypting at javax.crypto.Cipher.update(libgcj.so.81) at javax.crypto.CipherOutputStream.write(libgcj.so.81) at nsdl.crypto.BlockCrypt.encrypt(cryptTest) at nsdl.crypto.cryptTest.main(cryptTest) BlockCrypt.java: package nsdl.crypto; import java.io.*; import java.security.spec.*; import javax.crypto.*; import javax.crypto.spec.*; public class BlockCrypt […]

com.microsoft.sqlserver.jdbc.SQLServerException:索引2超出范围:(

我在java中有以下代码 qry=”insert into usr_auth(usrid,username,password,email) values(?,?,?,?)”; ps=con.prepareStatement(qry); ps.setString(1,getUniqueID()); ps.setString(2,newUp.getUsrName()); ps.setString(3,newUp.getPwd()); ps.setString(4,newUp.getEmail()); ps.executeUpdate(); 这段代码给了我一个IndexOutOfBoundsException : 发现数据库exception 很抱歉给您带来不便 exception详细信息:com.microsoft.sqlserver.jdbc.SQLServerException:索引2超出范围。 细节: 指数2超出范围。 堆栈跟踪: com.microsoft.sqlserver.jdbc.SQLServerException:索引2超出范围。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setterGetParam(SQLServerPreparedStatement.java:700)at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setValue (SQLServerPreparedStatement.java:709)位于javax的RegUser.doPost(RegUser.java:13)的DBOps.addUser(DBOps.java:55)的com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setString(SQLServerPreparedStatement.java:1034) .servlet.http.HttpServlet.service(HttpServlet.java:641)位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:30)的javax.servlet.http.HttpServlet.service(HttpServlet.java:722) )org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)org.apache.catalina.core.StandardContextValve。在org.apache中调用(StandardContextValve.java:164)。 catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java: 100)org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)org.apache.catalina.connector.CoyoteAdapter .service(CoyoteAdapter.java:403)org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:286)at org.apache.coyote.http11.Http11AprProtocol $ Http11ConnectionHandler.process(Http11AprProtocol.java:272)at at org.apache.tomcat.util.net.AprEndpoint $ SocketProcessor.run(AprEndpoint.java:1730)at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(Unknown Source)at java.util.concurrent.ThreadPoolExecutor $ Worker.run java.lang.Thread.run上的(未知来源)(未知来源) 在数据库中,我有4列usrid, username, password, email username是nvarchar(MAX)类型。 一切似乎都很好,但我仍然得到这个例外为什么? [stacktrace中的第55行是ps.setString行(2,newUp.getUsrName());]

如何在我的自定义exception中设置我自己的消息,可以检索我的getMessage()但是没有使用构造函数,有什么办法吗?

我刚学习Java中的exception处理。 我想知道的不是尝试说: throw new Exception(“My Message”); 和 String message=ex.getMessage(); System.out.println(message); 看看下面的代码, class ExceptionTest { public static void main(String[] args) { ExceptionTest t1=new ExceptionTest(); try { t1.riskyMethod();//call the risky or exception throwing method } catch(MyException myex) { System.out.println(“Exception has been thrown”); String message=myex.getMessage();//get the String passed during exception call System.out.println(“The message retrieved is “+message); myex.printStackTrace();//prints name […]

捕获Java中的exception

Java中存在某些预定义的exception,如果抛出这些exception,则会报告发生了严重的事情并且您可以更好地改进代码,而不是在catch块中捕获它们(如果我已正确理解它)。 但是我仍然发现许多程序,其中包含以下内容: } catch (IOException e) { … } catch (FileNotFoundException e) { …. } 我认为IOException和FileNotFoundException正是这种exception,我们不应该在catch块中捕获它们。 为什么人们这样做? 这样抓住他们会更好吗? 无论如何,Java编译器都会警告这种问题。 谢谢。

长期尝试声明

将大部分代码放在try statement是否有任何缺点。 如果我做了一些需要try statement事情,我通常最终会在try语句中为该函数做很多工作,因为我经常在那里声明我的变量,如果我这样做,就不能在那个范围之外使用它们。 这是常见的并被接受了吗? 人们通常在没有初始化之前声明变量,所以他们没有在try statement做所有事情(包括调用其他函数)吗? 或者它是否很长并不重要?