【java】实例 如何处理异常?

本文深入讲解Java中的异常处理机制,包括Throwable类的方法如printStackTrace()、toString()和getMessage()等,探讨了try...catch结构的应用及throws与throw的区别。此外,还介绍了如何创建自定义异常并提供了实际案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Throwable的成员方法

public void printStackTrace() 把异常的错误信息输出在控制台
public String toString() 返回此抛出的简短描述  
public String getMessage() 返回throwable的详细消息字符串

try...catch

格式:try{可能出现异常的代码;}catch(变量名 异常名) {异常的处理代码;}

package 异常;


public class Yichang {
	
	public static void main(String[] args) {
		try { 
		int[] arr= {1,2,3};
		System.out.println(arr[3]);}
/*Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
  at 异常.Yichang.main(Yichang.java:9)*/
        catch(ArrayIndexOutOfBoundsException a) {
        	System.out.println("存在错误!");
//public void printStackTrace() 把异常的错误信息输出在控制台
//public String toString() 返回此抛出的简短描述  
//public String getMessage() 返回throwable的详细消息字符串
        	//a.printStackTrace();
/*存在错误!
java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
	at 异常.Yichang.main(Yichang.java:9)*/
        	System.out.println(a.toString());
        	//java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
        	System.out.println(a.getMessage());
        	//Index 3 out of bounds for length 3
        }
		
	}

}

throws

格式:throws 异常类名;【跟在方法的括号后面】

public static void method() throws ArrayIndexOutOfBoundsException{
		int[] arr= {1,2,3};
		System.out.println(arr[3]);
	}

throws和throw的区别
throwsthrow
用在方法声明后面,跟的是异常类名用在方法体内,跟的是异常对象名
表示抛出异常,由该方法调用者来处理表示抛出异常,由方法体内的语句来处理
表示抛出异常的一种可能性,并不一定会发生这些异常执行throw一定抛出了某种异常

自定义异常 

继承自Exception类

格式: 

public class 异常类名 extends Exception{

  无参构造

  带参构造

}

public class Zidingyi extends Exception {
	/*
	 * 报错: serializable 类 Zidingyi 未声明类型为 long 的静态终态 serialVersionUID 字段
	 */
	private static final long serialVersionUID = -5068192539448251924L;

	public Zidingyi() {}
	public Zidingyi(String message) {
		super(message);
	}

}

 举例(应用自定义异常+try...catch+throws+throw)

package 异常;

public class Zidingyi extends Exception {
	/*
	 * 报错: serializable 类 Zidingyi 未声明类型为 long 的静态终态 serialVersionUID 字段
	 */
	private static final long serialVersionUID = -5068192539448251924L;

	public Zidingyi() {}
	public Zidingyi(String message) {
		super(message);
	}

	public static void check(int score) throws Zidingyi{
		if(score<0||score>100) {
			throw new Zidingyi();
		}else {System.out.println("分数正常");}
	}
	
	public static void main(String[] args) {
		try {
			check(-111);
		} catch (Zidingyi e) {
			e.printStackTrace();
		}
		/*try {
			check(1);
		} catch (Zidingyi e) {
			e.printStackTrace();
		}*/
	}
}

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老坛酸菜吃鸭子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值