Java – 异常在哪里和如何使用?
我正在阅读有关 Java中的异常处理的一些事情,以便能够编写更好的代码.好的,我承认我有罪我使用了太多的try-catch {}块,我在catch中使用了ex.printStackTrace(),甚至没有使用正确的记录器(实际上System.out和System.err被重定向到PrintWriter,所以日志被生成).然而,经过几个小时的阅读,我发现自己在一个陌生的地方:未知数.如果异常被设计为传递关于异常状态流的信息,那么如何知道WHERE是该信息的正确级别? 例如,当发生数据库错误时,应该返回一个空值还是一个错误代码,还是抛出异常?如果抛出,WHERE应该处理这个异常吗?我明白,如果您不能做任何事情,即使记录异常也是没有用的.然而,在GUI应用程序中,这可能会很容易地杀死你的GUI(我使用SWT,我经常看到这个),即使是在菜单方法()的情况下(ArrayIndexOutOfBounds异常会关闭该应用程序,如果不处理) .这个例子可以永远延续下去,但下面是问题的总结: >使用try-catch()是否会对性能产生负面影响? 我知道这个课题是永恒的,但实际上我期待着用150个课程来审视一个中等规模的课程,并用你的意见.非常感谢. 解决方法例外是一个任务的程序员不必自己处理这个问题. (1):如果问题没有逻辑给他处理任务.从流读取字符串的任务不应该处理磁盘错误是不是的.但是,如果数据不包含String,则应该是非常合乎逻辑的. (2):他不能自己处理(没有足够的信息) (3):没有逻辑(或可管理的)方式来区分不同的回报. (4):有许多类似的任务需要类似的处理和写作,在所有任务中难以维护. interface DBAccess { public Result accessDB(); } class DBOperation { static public void DoOperation(DBAccess pAccess) { try { return DBAccess.accessDB(); } catch(InvalidDBPasswordException IPE) { // Do anything about invalid password } catch(DBConnectionLostException DBCLE) { // Do anything about database connection lost } // Catch all possible DB problem } } ... private User[] ShowUserList_and_ReturnUsers() { // Find the used. // Show user list if (Users.count() == 0) return null; else return Users; // No need to handle DB connection problem here } private User[] GetUserProfile() { // Find the used and return // No need to handle DB connection problem here } ... /** An onClick event to show user list */ { DBOperation.DoOperation(new DBAccess() { public Result accessDB() { return ShowUserList_and_ReturnUsers(); } }); } /** An onClick event to show a user profile */ { DBOperation.DoOperation(new DBAccess() { public Result accessDB() { return GetUserProfile(); } }); } ... Many more DB access (5):写出所有检查错误是否复杂或减缓任务. for(int i = 0; i < Users.length; i++) { User aUser = Users[i]; // Do something with user } Replaced with try { for(int i = 0; ; i++) { User aUser = Users[i]; // Do something with user } } catch(ArrayOutOfBoundException AOBE) {} 如果用户数量较大,替换代码将会更好. 当发生数据库错误时,应该返回一个空值,并发出错误代码或抛出异常? (1).使用过多的try-catch()对性能有负面影响? (2). 如果我错过了可能发生的可能的X类型的异常,该怎么办?坦白说,在2-3年内,我听说过和使用了10%的Java标准异常. 是的,有人说如果来电者不知道如何处理被剔除的例外,他应该没有权利称之为投掷方法.是对的吗? (3).我已经阅读了Anders Hejlsberg的这篇文章,说检查的例外是坏的.这是否表示在某些情况下建议方便的异常吞咽? (4).一张图片价值1000字.我猜这里有一些例子会有很多帮助. 我现在得到了运行….对不起… :-p(在一分钟内,亲爱的!) (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |