第五:Java数组与异常

一.

数组是对象,其内可以是基本数据类型或者对象的引用(存放的是对象的引用,而不是对象本身)

二.

什么是异常
a.异常是程序运行过程中发生的事件,该事件可以中断程序指令的正常执行流程。
b.Java异常分为两大类:
1.错误(Error)是指JVM系统内部错误、资源耗尽等严重情况
2.违例(Execption)则是指其他因编程错误或偶然的外在因素导致的一般性问题,例如对负数开平方根、
空指针访问、试图读取不存在的文件以及网络连接中断等。

Java中异常的分类:

1.运行时异常(runtime exception,unchecked exception)
2.非运行时异常(checked exception)

三.

对于非运行时异常的两种处理方式:

1.继续抛出
2.try...catch

四.

catch处理异常的先后顺序(小的一定放在大的前面)

五.

关于在try中是return和System.exit(0)的情况

public static void main(String[] args) {
		String str="";
		try {
			str = "hello world";
			//return;
			System.exit(0);
		} catch (Exception e) {
			System.out.println("catch executed");
		}finally{
			System.out.println("finally executed");
		}
		System.out.println(str);
	}

/**
* 执行return,会执行finally,然后就退出(不会执行后面的那个打印语句)
* 执行System.exit(0),直接退出程序(连finally也不执行)

*/

六、

异常处理机制
a.Java异常处理宗旨:
1.返回到一个安全和已知的状态
2.能够让用户执行其他的命令
3.如果可能,则保存所有的工作
4.如果有必要,可以退出以避免造成进一步的危害
b.处理机制
1.Java程序执行过程中如出现异常,系统会监测到并自动生成一个相对应的异常类对象,然后再将它交给运行时系统
2.运行时系统再寻找相应的代码来处理这一异常。如果Java运行时系统找不到可以处理异常的代码,则
运行时系统将终止,相应的Java程序也将退出
3.程序员通常对错误(Error)无能为力,因而一般只处理违例(Execption)

c.自定义异常的使用

//用户自定义类必须继承Exception类
public class MyException extends Exception {
	private static final long serialVersionUID = -6378078717298014790L;

	private int idnumber;

	public MyException(String message, int id) {
		// 调用父类(Exception)的构造器...这下是关键
		super(message);
		this.idnumber = id;
	}

	public int getId() {
		return idnumber;
	}
}

//使用Debug调试程序的运行过程......一个很好学习异常的例子!
public class TestCustomizingException {
	public void regist(int num) throws MyException {
		if(num<0){
			throw new MyException("人数为负值,不合理",3);
		}
		System.out.println("登记人数:"+num);
	}
	public void managet(){
		try {
			regist(-100);
		} catch (MyException e) {
			System.out.println("登记失败,出错种类:   "+e.getId());
		}
		System.out.println("本次登记操作结束");
	}
	public static void main(String[] args) {
		new TestCustomizingException().managet();
	}

}

throw:

throw则是指抛出的一个具体的异常类型

import java.util.Scanner;

//用户自定义异常的使用
public class TestThrowException {
	public static void main(String[] args) {
		TestThrowException t = new TestThrowException();
		System.out.print("请输入您的年龄:");
		System.out.println("您的年龄:" + t.inputAge());
	}

	public int inputAge() {
		int result = -1;
		Scanner scan = new Scanner(System.in);
		// 当输入的数不符合的时候,系统进入死循环
		while (true) {
			try {
				result = Integer.parseInt(scan.next());
				if (result < 0 || result > 130) {
					// 自定义异常类的使用
					Exception me = new Exception("年龄超出合理范围!");
					throw me;
				}
				break;// 执行到break就可以退出死循环
			} catch (Exception e1) {
				System.out.print(e1.getMessage() + "请重新输入:");
			}
		}
		return result;
	}
}

throws:
throws是用来声明一个方法可能抛出的所有异常信息

import java.io.FileInputStream;
import java.io.IOException;

//抛出异常,让调用者去处理
public class TestThrowsException {
	public static void main(String[] args) {
		TestThrowsException t = new TestThrowsException();
		try {
			t.redFile();
		} catch (IOException e) {
			System.out.println(e);
		}
	}

	// 此方法不处理异常,抛出异常,让调用它的方法去处理异常
	public void redFile() throws IOException {
		FileInputStream in = new FileInputStream("myfile.txt");
		int b;
		b = in.read();
		while (b != -1) {
			System.out.print((char) b);
			b = in.read();
		}
		in.close();
	}
}


七、

断言(Assert)---知道有这个东西
a.从JDK1.4版本开始,Java语言中引入了断言机制---允许Java开发者在代码中加入一些检查语句,主要
用于程序调试目的:
1.断言机制在用户定义的boolean表达式(判定条件)结果为false时抛出一个Error对象,其类型为AssertionError
2.当我们需要在约定的条件不成立时中断当前操作的话,可以使用断言
3.作为Error的一种,断言失败也不需捕获处理或者声明抛出,一旦出现了则终止程序、不必进行补救和恢复。
b.启用和禁用断言
1.开启断言功能:
Java运行时环境默认设置为关闭断言功能,因此在使用断言以前,需要在运行Java程序时开启断言功能。
java -ea 一个类名
java -enableassertions 一个类名
2.关闭断言功能:
java -da 一个类名
java -disableassertions 一个类名

你可能感兴趣的:(java数组)