Tag: exception

与Java中的Exception vs Throwable相关联的开销

我知道 throw new Exception(); 有一个相当大的开销,因为它创建了一个完整的stackTrace等。 是否 throw new Throwable(); 出现同样的问题? 这种行为是inheritance的,还是抛出Throwable有一个较小的(o no)开销? 编辑 从分析师的角度来看,插入错误密码的用户是程序正常执行顺序的例外。 如果我有: public Session newSession() { validate_user_and_password(); } 从分析师的角度来看,抛出UserNotValidException听起来是正确的。 如果您的代码具有相当好的抽象,则返回null或0只是听起来不正确。 我只想知道我是否可以在代码中实现这一点,或者如果我不得不将其留给理论。 编程视点exception与分析师观点exception之间存在很大差异。 注意:我给出了一个非常简单而愚蠢的例子,这不是我的情况。 注2:我知道返回null将是普通的事情,但我需要有适当的抽象和OO代码,而且,就个人而言,我认为没有任何伤害。

Java未选中/已检查exception澄清

我一直在阅读关于未经检查和已检查的问题,没有一个在线资源真正清楚这些差异以及何时使用这两者。 根据我的理解,它们都会在运行时抛出,它们都代表超出逻辑预期范围的程序状态,但必须明确捕获已检查的exception,而未经检查的exception则不会。 我的问题是,假设为了论证我有一个方法来划分两个数字 double divide(double numerator, double denominator) { return numerator / denominator; } 以及需要在某处使用divison的方法 void foo() { double a = divide(b, c); } 谁负责检查分母为零的情况,是否应该检查或取消检查exception(忽略Java内置的分区检查)? 那么,除法方法是否被声明为或 double divide(double numerator, double denominator) throws DivideByZeroException { if(denominator == 0) throw DivideByZeroException else … } void foo() { try{ double a = divide(b, c); } catch(DivideByZeroException e) {} […]

java类/exception表的最大大小

我想知道java类的最大大小是多少。 如此处所示http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html#1546在Code属性结构中,代码长度指定为4字节,因此它是一大堆。 我不明白的是exception表的pc属性是2个字节。 如果代码长度超过2个字节但exception表只能解决2个字节,它怎么能工作?

在Java中,是使用throws Exception而不是抛出多个特定exception的好习惯?

在查看Spring MVC框架时,我注意到,除非我误解,否则它的开发人员会抛出抛出Exception而不是抛出多个exception。 我意识到这个问题的核心是检查与未检查的exception辩论,避免宗教战争,使用抛出一般exception是一种好的做法吗?

如何在Swift中向堆栈跟踪传递错误

在java中,如果一个方法抛出错误,则调用它的方法可以将其传递给下一个方法。 public void foo() throws Exception { throw new Exception(); } public void bar() throws Exception { foo(); } public static void main(String args[]) { try { bar(); } catch(Exception e) { System.out.println(“Error”); } } 我正在写一个快速的应用程序,并希望做同样的事情。 这可能吗? 如果不可能有什么其他可能的解决方案? 我调用此调用的原始函数具有此结构。 func convert(name: String) throws -> String { }

如何在java中重启线程?

我创建了一个程序来搜索源文件夹中的文件。 如果找到任何文件,它会处理该文件并将其移动到目标文件夹,然后在源文件夹中查找新文件。 它必须继续检查文件的源文件夹。 我使用线程来查找源文件夹中的文件。 我面临的问题是,在文件处理期间抛出任何exception时,线程都会停止。 即使抛出exception,我也希望线程能够运行。 它必须将导致错误的文件移动到其他文件夹并在源文件夹中查找新文件。 如何让线程继续运行? 例如: public void run() { try { searchfile(); } catch(Exception e) { e.printStackTrace(); } } public void searchfile(){ … } 更新 : 在我的问题中我应该更清楚。 实际上有4个源文件夹和4个目标文件夹。 我必须在每个源和目标对中执行相同的操作。 所以我在一个类中创建了4个线程,并在单独的类中执行操作。 class MainClass { public static void main(String[] args){ for(int i=0;i<4;i++){ SearchClass search = new SearchClass(); Thread thread = new Thread(search); thread.start(); […]

为什么我的applet得到java.security.AccessControlException:访问被拒绝(java.net.SocketPermission …),我该如何避免它?

我们对我的客户端在Safari中遇到Java安全性exception的原因一无所知。 有人可以帮忙吗? 在Windows上的Safari中可靠地发生exception。 这涉及Java applet。 Windows Vista上的Firefox和IE8也会出现exception。 以下是重现的步骤: 在Windows上打开Safari 点击此处: http : //www.cengraving.com/s/item?icmId = CH003 点击“自定义”(在屏幕底部) 加载“Instant Proof”页面后,单击“添加到购物车”。 完整堆栈跟踪: java.security.AccessControlException: access denied (java.net.SocketPermission www.cengraving.com resolve) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkConnect(Unknown Source) at sun.plugin.security.ActivatorSecurityManager.checkConnect(Unknown Source) at java.net.InetAddress.getAllByName0(Unknown Source) at java.net.InetAddress.getAllByName(Unknown Source) at java.net.InetAddress.getAllByName(Unknown Source) at java.net.InetAddress.getByName(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) […]

exception有多贵

你知道java中的exception抛出和处理是多么昂贵吗? 我们在团队中就例外的实际成本进行了几次讨论。 有些人认为通过使用例外而导致的性能损失被高估了。 今天我在软件中找到了以下代码: private void doSomething() { try { doSomethingElse(); } catch(DidNotWorkException e) { log(“A Message”); } goOn(); } private void doSomethingElse() { if(isSoAndSo()) { throw new DidNotWorkException(); } goOnAgain(); } 这个表现如何比较 private void doSomething() { doSomethingElse(); goOn(); } private void doSomethingElse() { if(isSoAndSo()) { log(“A Message”); return; } goOnAgain(); } 我不想讨论代码美学或任何东西,它只是关于运行时行为! 你有真实的经验/测量吗?

与Oracle DB连接时,网络适配器无法建立连接

尝试通过JDBC连接远程Oracle数据库时,我收到以下exception: java.sql.SQLRecoverableException: IO-fout: The Network Adapter could not establish the connection at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:419) at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:536) at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:228) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521) at java.sql.DriverManager.getConnection(DriverManager.java:322) at java.sql.DriverManager.getConnection(DriverManager.java:358) 以下是我的设置: Database: Oracle 10g Release 2 Standard Edition JDBC library: ojdbc6.jar JDBC driver: oracle.jdbc.driver.OracleDriver JDBC URL: jdbc:oracle:thin:@9.2.2.2:1521:ORCL where ORCL is database’s SID JDBC User/pwd: Correct username / password 关于这个问题的奇怪之处在于,当我在工作时,连接工作正常。 当我尝试通过AT&T […]

Java未捕获全局exception处理程序

我有一个应用程序,需要编写自定义全局未捕获exception处理程序。 我已经阅读了所有的stackoverflow线程,并且每个线程都缺少一个如何实现它的简单明了的例子。 请考虑以下简单示例: public static void log(String msg) throws Exception { String logPath = “/application/logs/java.log”; Calendar c = new GregorianCalendar(); SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); String now = format.format(c.getTime()); PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(logPath, true))); out.println(now + ” ” + msg); out.close(); } 它抛出一个标准exception,它只是一个标准输出。 我如何实现我自己的exception,通过将错误输出到日志文件中的简单方法覆盖标准exception? 显然,实际的应用程序要大得多,我们正在谈论未捕获的exception,这就是为什么try / catch块不是选项。 更新:如果你能用一个非常明确的完整例子来回答,因为我发现了几个像@RamonBoza提供的例子,但我不知道如何实现它们,这就是这个问题的全部内容。 更新2:所以我试着在下面的答案中测试唯一的例子,它显然不起作用。 我创建了一个新的类文件“MyRunnable”并将代码粘贴到其中: package […]