学习日志——2019/07/11

java 语言基础

  • 异常
    1.什么是异常?Java代码在运行时期发生的问题就是异常。
    2.在Java中,把异常信息封装成了一个类。当出现了问题时,就会创建异常类对象并抛出异常相关的信息(如异常出现的位置、原因等)。
    3.Exception 类及其子类是 Throwable 的一种形式,它用来表示java程序中可能会产生的异常,并要求对产生的异常进行合理的异常处理。Exception有继承关系,它的父类是Throwable。Throwable是Java 语言中所有错误或异常的超类
    eg:

public class ExceptionDemo {

   public static void main(String[] args) {
   	// TODO Auto-generated method stub
   	int a=0;
   	int b=100/a;
   	System.out.println("除法结束。");
   }

}

在这里插入图片描述
异常包含了错误的类型、原因以及位置

异常:不正常,我们在代码的时候出现的编译或者运行时的错误

异常的体系结构:
```java
	Throwable(最顶层)
	Error:出现的不能够处理的严重问题
	Exception:可以处理的问题
```				
  • 捕获异常
    捕获异常格式:
try {
	//需要被检测的语句。
}
catch(异常类 变量) { //参数。
	//异常的处理语句。
}
finally {
	//一定会被执行的语句。
}

eg:


public class ExceptionDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			System.out.println(1);
			int a=1;
//			int a=0;
			int b=100/a;
		}catch(ArithmeticException b) {
		System.out.println("除数不能为0。");
		}
		System.out.println(2);
	}

}

1.首先执行try语句, 如果发现异常,异常下面的代码不在执行,直接跳入catch语句中,catch语句结束后,整个try…catch结束
2. 如果没有发现异常,try语句执行结束后,try…catch直接结束, 不在执行catch语句

  • 异常的抛出
    使用关键字throws在方法的声明出抛出异常
import java.io.FileWriter;
import java.io.IOException;

public class ExceptionDemo {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		method();
		function();
	}
	public static void function() throws IOException {
		FileWriter fw=new FileWriter("a.txt");
	}
	private static void method() {
		try {
			System.out.println(1);
			int a=1;
//			int a=0;
			int b=100/a;
		}catch(ArithmeticException b) {
		System.out.println("除数不能为0。");
		}
		System.out.println(2);
	}

}

  • 多重catch句子
void show(){ //不用throws 
	try{
		throw new Exception();//产生异常,直接捕获处理
	}catch(XxxException e){
//处理方式	
	}catch(YyyException e){
//处理方式	
	}catch(ZzzException e){
//处理方式	
	}
}

eg:


public class ExceptionDemo02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			String s=null;
			System.out.println(s.length());
		}catch(NullPointerException e) {
			System.out.println("出现空指针!");
		}
		
//		try {
//			int[] arr=new int [5];
//			System.out.println(arr[8]);
//	}
		catch(ArrayIndexOutOfBoundsException e) {
			System.out.println("出现数组越界");
		}
		catch(Exception e) {
			System.out.println("出现异常");
		}
	}

}

注意:这种异常处理方式,要求多个catch中的异常不能相同,并且若catch中的多个异常之间有子父类异常的关系,那么子类异常要求在上面的catch处理,父类异常在下面的catch处理。

  • Throwable常用方法
    1.String getMessage() 返回此 throwable 的详细消息字符串
    2.String toString() 返回此 throwable 的简短描述
    3.void printStackTrace() 打印异常的堆栈的跟踪信息
  • finally的概述和应用场景
finally使用格式:
try{
}catch(异常类型 异常变量){
}finally{
   //释放资源的代码
}
  • 创建自己的异常

public class Exanple12 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			throw new TestException("测试自定义异常的使用。");
		
		}catch(Exception e)
		{
			System.out.print(e.toString());
		}
	}

}
class TestException extends Exception{
	public TestException() {
		super();
	}
	public TestException(String message) {
		super(message);
		
	}
	public String getMessage() {
		return "我的异常:"+super.getMessage();
	}
}

在这里插入图片描述
总结与提示:

  1. catch字句的捕获范围限制于其匹配的try字句,不能捕获其他try字句中的异常
  2. 不能单独使用try字句,它必须和catch字句或finally字句结合使用,catch字句可以设置多个,finally字句只能有一个。
  3. 有多重catch字句时,只能执行那个捕获到异常的字句,其余的catch字句不能执行。
  4. try/catch/finally三个字句中变量的作用域独立而不能相互访问。如果要在三个字句中都可以访问,则需要将变量定义到这些字句的外面。
  5. 不要写过大的try字句,一个try字句中尽量不要存太多的异常
  6. 一个方法中如果有发生异常的可能,则可以进行捕获处理,也可以声明由调用者来处理。
  7. throw语句后不允许有其他语句,因为这些语句没有机会执行。
  8. 不能利用异常处理进行程序的分支处理,它只是处理非正常情况的一种机制。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值