异常

所有的异常都有一个共同的父类,来自java.lang.throwable。

异常总的分为两类:

1.Error        代表系统级别错误,不是我们开发人员用的

2.Exception        代表程序可能出现的问题。异常也分为两类:RuntimeException(代码运行时出现的异常)和编译时异常。

异常的处理方式

1.jvm默认的处理方式

异常名称,异常原因,出现位置输出在控制台。并且程序停止运行,接下来的代码都不执行。

2.自己处理(捕获异常)

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

可以自己处理,让接下来的代码也可以执行。

灵魂四问

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

try中没有遇到问题,会把try中的代码全部执行,不会走到catch中。

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

try中遇到多个问题,当遇到第一个问题时会直接跳转到catch。try中如果有多个异常,那么我们就要写多个catch与各个异常对应。

注意:当我们要捕获多个异常时,如果这些异常存在父子关系,父类一定要写在下面。

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

程序会按jvm虚拟机默认异常处理方式执行。

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

try中遇到了问题,try中出现问题语句下面的代码都不运行了,会直接跳转到对应的catch当中,执行catch里面的代码。此时如果没有对应catch与之匹配,会交给虚拟机进行处理。

可以ctrl+alt+t,快速生成语句块

异常处理有特殊的成员方法: getmessage(),

                                                toString(),        抛出简短描述

                                                printStackTrace();        异常错误信息输出在控制台(不会结束虚拟机,仅仅打印错误信息,不会停止程序运行。因为是使用System.err.println()方式打印,因此是红色的错误提示)

package Exception;

public class ExceptionDemo1{
    public static void main(String[] args) {

        int[] arr = {1,2,3,4,5,6};
        //System.out.println(arr[10]);
        //此处代码的执行顺序为:进入try中,对输出语句进行判断,此时出现数组越界异常
        // 会new一个ArrayIndexOutOfBoundsException进入catch中进行比较,如果和catch中所写的异常一样
        //则执行catch中代码
        //然后走出try,继续执行接下来的代码。
//        try {
//            System.out.println(arr[0]);
//        }catch (ArrayIndexOutOfBoundsException e){
//            System.out.println("索引越界了");
//        }

        try {
            System.out.println(arr[10]);
        } catch (ArrayIndexOutOfBoundsException e) {
//            String message = e.getMessage();
//            System.out.println(message);

//            String string = e.toString();
//            System.out.println(string);

            e.printStackTrace();
        }
        System.out.println("这段代码被继续执行了");


    }
}

3.抛出异常

throws---->写在方法定义处,声明一个异常,告诉调用者使用本方法可能存在的异常

throw---->写在方法内,手动抛出异常对象,方法中下面的代码都不再执行了

自定义异常

定义一个异常类,写继承关系(如extends runtimeexception),包含空参构造和带参构造。

File

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

只有创建了file对象,java才会将这段字符串与路径联系起来,否则仅仅视作一串字符。绝对路径带盘符,相对路径是不带盘符的,默认到当前项目下面去找

File的成员方法

isDirectory(),isFile(),exists(),length()(返回字节数量,无法获取文件夹大小),getAbsolutePath(),getPath(),getName()(带后缀),lastModified().

createNewFile()(创建的一定是文件,假如路径中文件没有后缀名,则会生成一个没没有后缀的文件),mkdir(),mkdirs(),delete()(删除的是文件不走回收站,会直接删除。删除的是文件夹分为两种情况,空文件夹直接删,有内容的文件夹删不了)。

listFiles()(获取当前路径下的所有内容。空文件夹返回长度为0的数组。有内容文件夹,所有内容放在file数组中返回。有隐藏文件,会把隐藏文件也返回。当访问的是需要有权限才能访问的文件夹,结果会返回null)

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐