- System.out.println(10 / 0);
- // 执行结果
- Exception in thread "main" java.lang.ArithmeticException: / by zero
数组越界异常:ArrayIndexOutOfBoundsException
- int[] arr = {1, 2, 3};
- System.out.println(arr[100]);
- // 执行结果
- Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100
- int[] arr = null;
- System.out.println(arr.length);
- // 执行结果
- Exception in thread "main" java.lang.NullPointerException
(2)RunTimeException以及其子类对应的异常,都称为运行时异常。
比如NullPointerException、ArrayIndexOutOfBoundsException、ArithmeticException。
- public static void main(String[] args)throws ArrayIndexOutOfBoundsException {
- int[] array = new int[2];
-
- //捕捉异常
- try {
- //放可能发生的异常
- System.out.println(array[3]);
- System.out.println("这里不会再执行了");
-
- }catch (ArrayIndexOutOfBoundsException e) {
- //捕捉异常
- System.out.println("处理了ArrayIndexOutOfBoundsException异常");
- //捕捉,打印异常
- e.printStackTrace();
-
- }
- }
- public static void OpenConfig(String filename) throws FileNotFoundException {
-
- if (filename.equals("config.ini")) {
- throw new FileNotFoundException("配置文件名字不对");
- }
- }
- class Exception {
- File file;
-
- /*
- FileNotFoundException : 编译时异常,表明文件不存在
- 此处不处理,也没有能力处理,应该将错误信息报告给调用者,让调用者检查文件名字是否给错误了
- */
- public static void OpenConfig(String filename) throws FileNotFoundException {
-
- if (filename.equals("config.ini")) {
- throw new FileNotFoundException("配置文件名字不对");
- }
- }
-
- //捕获
- public static void main(String[] args) {
- try {
- //将可能出现异常的代码放在这里
- OpenConfig("test");
- } catch (FileNotFoundException e) {
- // 如果try中的代码抛出异常了,此处catch捕获时异常类型与try中抛出的异常类型一致时,或者是try中抛出异常的基就会时,就会被捕获到
- e.printStackTrace();
- }finally {
- // 此处代码一定会被执行到,一般用来关闭文件,释放资源
- }
-
- }
- }
- 语法格式:
- try{
- // 可能会发生异常的代码
- }catch(异常类型 e){
- // 对捕获到的异常进行处理
- }finally{
- // 此处的语句无论是否发生异常,都会被执行到
- }
- // 如果没有抛出异常,或者异常被捕获处理了,这里的代码也会执行
- class login {
- private String userName;
- private String passWord;
-
-
- public void loginFo(String userName, String passWord)throws UserException,PassWardException{
- if (!this.userName.equals(userName)) {
- throw new UserException("抛出自定义,的用户名错误异常");
-
- }
-
- if (!this.passWord.equals(passWord)) {
-
- throw new PassWardException("抛出密码自定义,的用密码错误异常");
-
- }
-
- System.out.println("登录成功!");
- }
-
-
- public String getUserName() {
- return userName;
- }
-
- public void setUserName(String userName) {
- this.userName = userName;
- }
-
- public String getPassWord() {
- return passWord;
- }
-
- public void setPassWord(String passWord) {
- this.passWord = passWord;
- }
- }
-
-
-
- public class TestException {
- public static void main(String[] args) throws UserException {
- login login = new login();
- login.setPassWord("321");
- login.setUserName("haha");
- login.loginFo("haha", "323");
-
- /*try {
- login.loginFo("haha", "323");
- }catch (UserException e) {
- e.printStackTrace();
- }catch (PassWardException e) {
- e.printStackTrace();
- }finally {
- }*/
- }
- }