JAVA_SE基础——55.自定义异常类

在Java中已经提供了大量的异常类,但是这些异常类有时野很难满足开发者的要求,所以用户可以根据自己的需要来定义自己的异常类。但自定义的异常类必须继承自Exception或其子类。


可以自定义出的问题称为自定义异常。对于除数为0的情况,可以用ChuShu0异常来表示,除数为0这种异常在java中并没有定义过。那就按照java异常的创建思想,面向对象,将除数为0进行自定义描述,并封装成对象。这种自定义的问题描述称为自定义异常。


code1中体现自定义类继承Exception或者其子类,通过构造函数定义异常信息。

code1

Class ChuShu0 extends Exception{
     DemoException(String message){
          super(message);//调用Exception有参的构造方法
     }
}

在实际开发中  如果没有特殊要求,自定义的异常类只需继承Exception类,在构造方法中使用super()语句调用Exception的构造方法即可。

既然定义了 自定义的异常类 ,那么怎么使用呢? 其实使用方法和Exception类及其子类是一样的用法的,还是那2种处理方式。


code2中体现下面来看下除数为0的异常演示

code2

package day10;
class ChuShu0Exception extends Exception{
	public ChuShu0Exception(String msg){
		super(msg);
	}
}
public class TestException3  {
	
	public static void main(String[] args){
		try{
			int result = divide(4,0);
			System.out.println(result);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public static int divide(int a , int b ) throws Exception {
		if(b==0){
			throw new ChuShu0Exception("除数为0");
		}
		int result = a/b ;
		return result ;
	}
}

运行结果:

day10.ChuShu0Exception: 除数为0
at day10.TestException3.divide(TestException3.java:19)
at day10.TestException3.main(TestException3.java:11)


P.S.

code3中体现如果自定义类继承的是RuntimeException,那么运行时异常的特点是Java编译器不会对其进行检查,也就是说,当程序中出现这类异常时,既没有受用try...catch语句捕获或使用throws关键字声明抛出,程序也能编译通过,如果有异常产生,则异常将由JVM进行处理(继续往上抛,直至抛给JVM)


code3

package day10;
class ChuShu0Exception extends RuntimeException{
	public ChuShu0Exception(String msg){
		super(msg);
	}
}
public class TestException3  {
	
	public static void main(String[] args){
		//try{
			int result = divide(4,0);
			System.out.println(result);
		//}catch(Exception e){
		//	e.printStackTrace();
		//}
	}
	public static int divide(int a , int b ){
		if(b==0){
			throw new ChuShu0Exception("除数为0");
		}
		int result = a/b ;
		return result ;
	}
}
运行结果:

Exception in thread "main" day10.ChuShu0Exception: 除数为0
at day10.TestException3.divide(TestException3.java:19)
at day10.TestException3.main(TestException3.java:11)



交流企鹅:654249738,和自学者交流群:517284938


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,让我来回答你的问题。 Java中的异常处理是一个非常重要的概念,它可以帮助我们更好地处理代码中可能出现的错误情况,从而使我们的程序更加健壮。 在Java中,有两种型的异常:Checked Exception和Unchecked Exception。其中,Checked Exception必须在代码中显式地声明和处理,否则编译器会报错。而Unchecked Exception则不需要声明和处理,可以直接抛出。 当Java程序运行时,如果遇到了异常,它会自动抛出一个异常对象。我们可以通过try-catch语句来捕获并处理这些异常。如果我们想要抛出自己定义的异常,可以通过自定义异常来实现。 下面是一个Java自定义异常的示例代码: ```java public class MyException extends Exception { public MyException(String message) { super(message); } } ``` 在上面的代码中,我们定义了一个名为MyException自定义异常,它继承自Java中的Exception。通过继承Exception,我们可以获得异常处理的一些基本功能,例如getMessage()方法来获取异常信息。 在MyException中,我们还定义了一个构造方法,它接受一个字符串参数message,并将其传递给父的构造方法。 下面是一个Java抛出异常与自定义异常的应用示例代码: ```java public class Test { public static void main(String[] args) { try { int result = divide(10, 0); System.out.println(result); } catch (MyException e) { System.out.println(e.getMessage()); } } public static int divide(int x, int y) throws MyException { if (y == 0) { throw new MyException("除数不能为0"); } return x / y; } } ``` 在上面的代码中,我们定义了一个名为Test的,其中包含了一个divide()方法和一个main()方法。 在divide()方法中,我们判断了除数是否为0,如果是,就抛出一个MyException异常。 在main()方法中,我们调用了divide()方法,并通过try-catch语句来捕获并处理可能抛出的MyException异常。 总之,Java中的异常处理是一个非常重要的概念,自定义异常可以帮助我们更好地处理代码中可能出现的错误情况。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值