C#中如何在new关键字创建对象的初始化块内捕获异常?
匿名内部类初始化块中捕获异常的正确方式
你之前的写法不符合Java语法规则,匿名内部类的大括号属于实例初始化块,不能直接把try-catch作为这个块的顶层结构。正确的做法是把try-catch嵌套在初始化块内部,包裹住可能抛出异常的代码。
错误写法示例:
Test test1 = new Test() { try { } catch() { } };
正确写法示例:
Test test1 = new Test() { { try { // 放置可能抛出异常的代码 doSomethingThatMightThrow(); } catch (Exception e) { // 自定义异常处理逻辑 System.err.println("捕获到异常: " + e.getMessage()); } } };
原理很简单:匿名内部类的大括号里的代码是实例初始化逻辑,本质是一段代码块,你可以在这个块内部嵌套try-catch结构来捕获执行过程中出现的异常,而不是把try-catch直接作为初始化块的外层结构。
内容的提问来源于stack exchange,提问作者Abhishek Kumar
相关产品推荐
相关产品推荐

