java – 捕获NumberFormatException是不好的做法?
发布时间:2020-12-14 17:46:38 所属栏目:Java 来源:网络整理
导读:我必须解析一个可以采用十六进制值或其他非十六进制值的字符串 0xff,0x31或A,PC,标签等. 我用这个代码来分割两种情况: String input = readInput();try { int hex = Integer.decode(input); // use hex ...} catch (NumberFormatException e) { // input is
我必须解析一个可以采用十六进制值或其他非十六进制值的字符串
0xff,0x31或A,PC,标签等. 我用这个代码来分割两种情况: String input = readInput(); try { int hex = Integer.decode(input); // use hex ... } catch (NumberFormatException e) { // input is not a hex,continue parsing } 这个代码可以被认为是“丑”还是难以阅读?还有其他(也许更优雅)的解决方案吗? 编辑:我想澄清(在我的情况下)一个错误的输入不存在:我只需要区分是否是一个十六进制数字,否则. 解决方法
异常处理是Java编程语言的一个组成部分(也是设计目标之一)…你不应该把它们抛弃,只因为你认为它们是“丑陋的”.
也就是说,如果你想要一个简单可读的方式来处理NumberFormatExceptions,你可以考虑使用 toInt(String str,int defaultValue)方法将String转换为int,如果转换失败,则返回默认值.如果字符串为空,则返回默认值. NumberUtils.toInt(null,1) = 1 NumberUtils.toInt("",1) = 1 NumberUtils.toInt("1",0) = 1 该方法封装了异常捕获和处理,如下面的source code所示.因此,客户端只需要单方法调用. public static int toInt(String str,int defaultValue) { if(str == null) { return defaultValue; } try { return Integer.parseInt(str); } catch (NumberFormatException nfe) { return defaultValue; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |