package fuck1;//通过throws 抛出异常(隐式异常抛出) 针对可能出现异常的方法适用.
/* 最好的异常是什么都不做,既是说出现的异常交给用户区处理。例如写一个方法,这个方法有出现异常的可能性,
* 那么最好的办法就是把对异常的处理工作交给调用这个方法的调用者,那么就需要在方法中定义要抛出的异常
*/ //问:和自动选择异常类型有什么区别???????
public class root23 {
static void method()throws NullPointerException,ClassNotFoundException,IndexOutOfBoundsException
{
String n = null;
int strLength=0;//初始化变量strLength
strLength = n.length();//获取n的长度赋给变量 strLength
System.out.println(strLength);
}
public static void main(String args[])
{
try
{
method();
}
catch(NullPointerException e)
{
System.out.println("N 异常");
e.printStackTrace();
} catch (IndexOutOfBoundsException e) {
System.out.println("i 异常");
e.printStackTrace();
} catch (ClassNotFoundException e) {
System.out.println("c 异常");
e.printStackTrace();
}
}
}
------解决方案--------------------------------------------------------
所有的异常都继承自Throwable类.自动选择一般就是有java虚拟机来实现处理异常,这类异常叫做RuntimeException,而用户去可以自己处理的异常一般继承自Exception。这些异常可以通过用户自己的编写来处理,这样的话就可以达到用户个人的目的,而虚拟机一般都会是程序结束,严重的时候可能出现不可预知的错误。
------解决方案--------------------------------------------------------
的确没有必要
都try-catch了
还throws干嘛
------解决方案--------------------------------------------------------
你写了try-catch就不要在类的头上写什么throws了,否则就要写这样方便调用这个类的方法来处理异常,。