入门使用
package 异常;
/*
异常:就是在程序在运行时出现不正常情况、
异常由来:问题也是现实生活中一个具体的事物,也可以通过Java的类的形式描述,并封装成对象。
其实就是Java对不正常的情况进行描述后的对象体现。
把问题封装成对象就是异常。
对于问题的划分:两种,一种是严重的问题,一种是非严重的问题。
对于严重的:Java通过Error类进行描述。
对于Error一般不编写针对性的代码对其进行处理。
对于非严重的,Java通过Exception类进行描述。
对于Exception可以使用针对性的处理方式进行处理。
Throwable
Error
Exception
java中处理异常有特定的语句:
try{
需要被检测的代码:
}catch(异常类 异常变量){
处理异常的代码:(也就是处理方式)
}finally{
一定会执行的代码
}
上面这种方法是不可取的,因为你在开发时,你不知道一段代码是否会出现异常
重点来了:
*/
class demo{
public void div(int a,int b){
System.out.println(a/b);
}
}
public class one {
public static void main(String[] args) {
demo a = new demo();
// a.div(4,0); //当被除数是0时,会出现异常。
try {
a.div(4,0);
}catch (Exception e){
System.out.println("被除数不能为0");
}
System.out.println("over");
}
}
自定义异常的使用
package 异常;
/*
如何自定义异常信息呢?
因为父类中已经把异常信息的操作都完成了
所以子类只要在构造时,将异常信息传递给了父类通过super语句。
那么就可以直接通过getMessage方法获取自定义的异常信息。
自定义异常:必须是自定义类继承#Exception
* */
//出现负数的异常
class ZidingyiException extends Exception{
private int value;
public int getValue(){
return value;
}
public ZidingyiException(int value) {
this.value = value;
}
public ZidingyiException(String message, int value) {
super(message);
this.value = value;
}
public ZidingyiException(String message, Throwable cause, int value) {
super(message, cause);
this.value = value;
}
}
//出现为0的异常
class ZeryException extends Exception{
//这下面的可以直接在构造方法中进行构造
public ZeryException() {
}
public ZeryException(String message) {
super(message);
}
public ZeryException(String message, Throwable cause) {
super(message, cause);
}
}
class demo2{
int div (int a,int b) throws ZidingyiException, ZeryException { //在功能上抛出异常
if (b<0)
throw new ZidingyiException("出现了除数是负数的情况",b); //手动通过throw关键字抛出一个自定义异常现象
if (b==0)
throw new ZeryException("出现了除数是0的情况");
return a/b;
}
}
public class 自定义异常 {
//两种方法的区别:第一种不能进行新的操作,而第二种可以在异常的处理方式中进行新的操作
//第一种方法:直接抛出异常 常用
/* public static void main(String[] args) throws ZidingyiException, ZeryException { //这里可以抛出异常,也可以try
demo2 d = new demo2();
// int x = d.div(4,2);
int x1 = d.div(4,-1);
// int x2 = d.div(4,0);
System.out.println("x:"+x1);
}*/
//第二种方法进行try异常
public static void main(String[] args) {
demo2 d = new demo2();
try {
int x = d.div(4,-3);
System.out.println("x:"+x);
}catch (ZidingyiException e){
System.out.println(e.toString());
System.out.println("除数出现负数了,负数是"+e.getValue());
}catch (ZeryException e){
System.out.println(e.toString());
System.out.println("出现了为0的情况");
}
}
}