今天我们来看一下处理异常的问题。异常对象其实都是派生于Throwable类的一个实例。
Throwable分支之下有一个Error和一个Exception。
常用的方法有 :
getMessage()----用来返回String类型的异常信息
printStackTrace()----打印追踪方法调用栈而获得的详细异常信息,可以用来追踪错误。一会我们可以来实验一下这两个方法。
声明异常用throws,而抛出异常用throw。这两个很容易混淆。
①throws使用在函数上,但是throw是用在函数内的.
②throws声明的异常类,但是throw抛出的是异常类所对应的对象。
一个方法可能会出现多种异常,因此呢,throws子句是允许抛出多个异常的,用“,”隔开。
比如public void merhod()throws IOException,SQLException{..}
我在学习异常的时候也看了一些大神的博客,感觉有一个代码非常好,简单并且容易理解。
贴代码~
package exception;
public class test {
public static void main(String[] str) {
Demo d = new Demo();
try {
System.out.println(d.div(4, 0));
} catch (Exception e) {
System.out.println(e);
//可以尝试一下e.printStackTrace();
} }}class Demo { int div(int a, int b) { return a / b; }}
在上述代码中,我们就可以捕捉到代码并且处理了一下这个异常,引起异常的原因是因为他的除数是0。
下面我们来试一下 自己定义一个异常类。
我们说过了,异常对象其实都是派生于Throwable类的一个实例,并且其下有两个分支,我们一般都是处理异常,因此使用分支Exception
贴代码~
package exception;
public class test {
public static void main(String[] str) {
Demo d = new Demo();
try {
System.out.println(d.chufa(4, 0));
} catch (chufaException e) {
System.out.println(e);
}
}
}
class Demo {
public int chufa(int a, int b)throws chufaException
{
if(b==0)
{
throw new chufaException("异常");
}
return a / b;
}
}
class chufaException extends Exception{
private String a;
public chufaException(String s)
{
a=s;
}
public String getMessage()
{return a;
}
}
通过这个例子应该可以好理解自定义的异常类。加油!