首页 > 代码库 > 《Java编程那点事儿》读书笔记(六)
《Java编程那点事儿》读书笔记(六)
1.抛出异常:throw 异常对象;
下面的代码是一个进制转换代码,可以转换为2进制和8进制,如果输入其他参数,则抛出异常。
1 public static String transform(int value,int radix){ 2 if(value <0 ) 3 throw new IllegalArgumentException("需要转换的数字不是自然数!"); 4 5 if(radix != 2 || radix != 8) 6 throw new IllegalArgumentException("进制参数非法!"); 7 8 StringBuffer sb = new StringBuffer(); 9 int temp;10 if(value =http://www.mamicode.com/= 0)11 return "0";12 13 while(value != 0){14 temp = value%radix;15 sb.insert(0, temp);16 value /= radix;17 }18 return sb.toString();19 }
2.声明异常:声明异常类似于声明药品的副作用,在声明函数的时候同时在函数后面声明该函数可能抛出的异常,这样调用这个函数的程序员就知道这个函数可能出现的异常,就可以提前对这些异常进行处理。上面的函数还可以声明为以下形式:
public static String transform(int value,int radix) throws IllegalArgumentException{ //......}
3.捕获异常
try{ //逻辑代码}catch(异常类名 参数){ //异常处理代码}finally{ //清理代码}
上述try中的代码是正常执行的代码,如果在执行这段代码的过程中抛出了异常,则根据catch中的异常类名匹配到对应的异常处理代码,最后因为在try中遇到异常时就停止执行try中剩下的代码,而有时候需要做一些后续的清理工作,比如关闭文件,断开网络连接等,所以在finally里面处理这些问题。
String s = "123";try{ int n = Integer.parseInt(s); char c = s.charAt(4);}catch(NumberFormatException e){ System.out.println("该字符串无法转换!");}catch(StringIndexOutOfBoundsException e){ System.out.println("字符串索引越界!");}catch(Exception e){ System.out.println("其他异常!");}
上述代码中Exception e这个异常包含了所有类型的异常,它是上述两个异常的父类,所以它要写在这两个异常的后面。
4.常用异常处理方法
不处理
直接处理:提醒用户输入错误,对值进行修改等
重新抛出:重新抛出一个自定义异常
在方法中声明:即在引起异常的这个方法声明时声明这个异常,使得调用这个方法的程序员去处理这个异常。一个例子如下:
public void test(String s)throws NumberFormatException{ int n = Integer.parseInt(s); System.out.println(n);}
上述test方法没有在方法内部处理异常,而是将异常交给调用test函数的程序去处理。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。