黑马程序员————异常

概念:

指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。

在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。

 异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行

异常最上层的父类是:Exception。

异常分为两类:

1.编译时异常,没有继承RuntimeException的异常,直接继承于Exception。编译阶段就会报错提示

2.运行时异常,RuntimeException本身和子类。编译阶段没有错误提示,运行时出现的,一般是由于参数传递错误带来的问题

作用:

1.用来查询bug的关键参考信息

2.作为方法内部的一种特殊返回值,一边通知调用者底层的执行情况

1、try-----catch

格式:try{

可能出现异常的代码

}catch(异常类名 变量名){

异常的处理代码

}

目的:当代码出现异常时,可以让程序继续往下执行

package Excetion;

public class demo1 {
    public static void main(String[] args) {
        int [] arr={1,2,3,4,5};
        try {
            System.out.println(arr[10]);
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println("索引越界了");
        }
        System.out.println("看看我执行力吗");
    }
}

2.常见问题

1.如果try中没有遇到问题,怎么执行?

答:会把try里面所有的代码全部执行完毕,不会执行catch里面的代码

2.如果try中可能会遇到多个问题怎么执行

答:会写多个catch与之对于,父类异常需要写在下面

3.如果try遇到的问题没有被捕获,怎么执行

答:相当于try....catch白写了,当前一场交给虚拟机处理

4.如果try中遇到了问题,那么try下面的其他代码还会执行吗?

答:不会执行。try中遇到问题,直接跳到对应的catch,如果没有对应的catch与之匹配,则交给虚拟机处理

3.Throwable

成员方法:其中,printStackTrace,利用system.err.printIn进行输出,把异常的信息通过红色字体输出在控制台

4.抛出异常

4.1throws

写在方法定义处,表示声明一个异常,告诉调用者,使用本方法可能会有那些异常

编译时异常:必须写,运行时异常:可以不写

格式:修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2…{   }  

public class ThrowsDemo {
    public static void main(String[] args) throws FileNotFoundException {
        read("a.txt");
    }

    // 如果定义功能时有问题发生需要报告给调用者。可以通过在方法上使用throws关键字进行声明
    public static void read(String path) throws FileNotFoundException {
        if (!path.equals("a.txt")) {//如果不是 a.txt这个文件 
            // 我假设  如果不是 a.txt 认为 该文件不存在 是一个错误 也就是异常  throw
            throw new FileNotFoundException("文件不存在");
        }
    }
}

4.2throw

写在方法内,结束方法,手动抛出异常对象,交给调用者,方法中下面的代码不再执行

格式:throw new 异常类名(参数);

例:

throw new NullPointerException("要访问的arr数组不存在");

throw new ArrayIndexOutOfBoundsException("该索引在数组中不存在,已超出范围");

public class ThrowDemo {
    public static void main(String[] args) {
        //创建一个数组 
        int[] arr = {2,4,52,2};
        //根据索引找对应的元素 
        int index = 4;
        int element = getElement(arr, index);

        System.out.println(element);
        System.out.println("over");
    }
    /*
     * 根据 索引找到数组中对应的元素
     */
    public static int getElement(int[] arr,int index){ 
       	//判断  索引是否越界
        if(index<0 || index>arr.length-1){
             /*
             判断条件如果满足,当执行完throw抛出异常对象后,方法已经无法继续运算。
             这时就会结束当前方法的执行,并将异常告知给调用者。这时就需要通过异常来解决。 
              */
             throw new ArrayIndexOutOfBoundsException("哥们,角标越界了```");
        }
        int element = arr[index];
        return element;
    }
}

5.File

File对象表示路径,可以是文件,也可以是文件夹。这个路径可以是存在的,也可以是不存在的

绝对路径:带盘符的

相对路径:不带盘符的,默认在项目下寻找

package File;

import java.io.File;

public class demo1 {
    public static void main(String[] args) {
        String st="D:\\javaWeb";
        File file=new File(st);
        System.out.println(file);

        String st1="D:\\javaWeb";
        String child="a.txt";
        File f2=new File(st1,child);
        System.out.println(f2);

        File parent =new File("D:\\javaWeb");
        String child2="a.txt";
        File f3=new File(parent,child2);
        System.out.println(f3);
    }
}

5.1成员方法

判断、获取:

package File;

import java.io.File;

public class demo2 {
    public static void main(String[] args) {
        //1.对一个文件的路径进行判断
        File f1=new File("D:\\a.txt");

        System.out.println(  f1.isDirectory());//判断是否为文件夹
        System.out.println(f1.isFile());//判断是否为文件
        System.out.println(f1.exists());//判断是否存在
        System.out.println("_______________________________");
        //2.对一个文件夹的路径进行判断
        File f2=new File("D:\\qq\\MobileFile");

        System.out.println(  f2.isDirectory());//判断是否为文件夹
        System.out.println(f2.isFile());//判断是否为文件
        System.out.println(f2.exists());//判断是否存在

        //3.对一个不存在的路径进行判断
        File f3=new File("D:\\qq1\\MobileFile");

        System.out.println(f3.isDirectory());//判断是否为文件夹
        System.out.println(f3.isFile());//判断是否为文件
        System.out.println(f3.exists());//判断是否存在


         //1.length 返回文件的大小(字节数量)
        File f1=new File("D:\\a.txt");
        System.out.println(f1.length());

        //无法获取文件夹的大小
        File f2=new File("D:\\qq");
        System.out.println(f2.length());
        //2.getAbsolutePath运行文件的绝对路径
        File f3=new File("ps\\a.txt");
        System.out.println(f3.getAbsolutePath());

        //3.getPath 返回定义文件使用的路径

        File f4=new File("ps\\a.txt");
        System.out.println(f4.getPath());

        //4.getName 获取名字
        File f5=new File("ps\\a.txt");
        System.out.println(f5.getPath());

        //5.lastModified 返回文件最后修改的事件(时间毫秒值)
        File f6=new File("D:\\a.txt");
        System.out.println(f6.lastModified());


    }
}

创建、删除

package File;

import java.io.File;
import java.io.IOException;

public class demo4 {
    public static void main(String[] args) throws IOException {
        //1.创建一个空的文件
        File f1=new File("D:\\ps\\c.txt");
        boolean newFile = f1.createNewFile();
        System.out.println(newFile);

        //2.创建单级文件夹
        File f2=new File("D:\\ps\\c");
        boolean b = f2.mkdir();
        System.out.println(b);

        //3.创建多级别文件夹
        File f3=new File("D:\\ps\\c2\\c\\a");
        boolean c = f3.mkdirs();
        System.out.println(c);

        //4.删除文件、文件夹
        File f4=new File("D:\\ps\\c1");
        boolean d = f3.delete();
        System.out.println(d);
    }
}

遍历:

当file表示的路径不存在时,返回null

当file表示的路径是文件时,返回null

当file表示的路径是一个空文件夹时,返回一个长度为0的数组

当file表示的路径时一个有内容的文件夹时,将里面的所有文件和文件夹的路径放在file数组中返回

当file表示的路径有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在file数组中放回,包含隐藏文件

当需要权限才能访问的文件夹时,返回null

package File;

import java.io.File;

public class demo5 {
    public static void main(String[] args) {
        File file=new File("D:\\ps");
        File[] files = file.listFiles();
        for (File file1 : files) {
            //file1,以此表示ps文件夹里面的所有路径
            System.out.println(file1);
        }
    }
}

获取并遍历:

黑马程序员的tb_brand是指在JavaWeb基础教程中创建的一个表。这个表是用来存储品牌信息的,具体的表结构和数据类型需要和JavaBean类中的成员变量保持一致。\[1\]在这个教程中,使用了Maven来构建项目,并且使用了MyBatis作为持久层框架,通过配置pom.xml文件来引入相关依赖。\[2\] Maven是一个用于管理和构建Java项目的工具,它提供了一套标准化的项目结构、构建流程和依赖管理机制。\[3\] #### 引用[.reference_title] - *1* [【JAVAWEB开发黑马程序员java web案例资料(含Element的删除与修改)](https://blog.csdn.net/aasd23/article/details/126940147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!](https://blog.csdn.net/qq_57383364/article/details/128103058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JavaWeb——黑马程序员课程笔记](https://blog.csdn.net/King_ZACC/article/details/128573804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值