A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小青年oh 中级黑马   /  2016-3-30 23:52  /  264 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1. 整理遇到的异常和错误
        运行环境
        出现原因
        解决方案
        -- IO讲完 检查,这就是工作经验。

2.异常体系
        Throwable 类是 Java 语言中所有错误或异常的超类。
                Error -- 严重错误。不需要处理(不需要写捕捉错误的代码)。 需要改代码的。 例如:死循环造成内存溢出。
                        xxxError(有一个特殊)
                Exception
                        编译期 : 必须写代码处理异常。
                        运行期 : 也是不需要处理异常,而是需要改代码的。
                        xxxException
                       
3、Jvm默认处理异常和自己处理
        Jvm默认处理: 把详细信息显示在控制台,然后终止。后面的代码就不执行了。
        自己捕捉异常处理:
                        try {
                                // 可能产生异常的代码(尽可能的定位到异常出现的位置)
                        } catch (异常类名 变量名) { // Exception
                                // 异常处理语句
                                // 以后,返回错误页面等等。暂时显示异常。
                        }
                       
                        // 不影响异常后面的代码运行。

        世界上最遥远的距离,是我在if里你在else里,似乎一直相伴又永远分离;
        世界上最痴心的等待,是我当case你是switch,或许永远都选不上自己;
        世界上最真情的相依,是你在try我在catch。无论你发神马脾气,我都默默承受,静静处理。到那时,再来期待我们的finally!               
                       
        几个名词:
                声明异常
                        抛出异常:方法声明上使用
                        捕获异常:方法体中使用
                嵌套异常:在finally中会出现需要捕获处理的异常
4.多个异常的处理方式
        A: 针对每一个异常都进行try...catch
        B: 针对所有异常 写一个try 多个 catch。
                注意:一定要捕捉到所有的异常。
                        一旦捕捉到异常了,try下面的语句将不再执行,程序将跳转到catch。

5.多个catch的顺序问题
        如果异常同级,没有顺序。
        如果异常存在父子关系,父类一定要放在子类的后面。
                原则:如果你明确知道是什么异常,就一定要捕捉具体的异常,不建议使用父类。
                               
6.JDK1.7后新特性
        多个异常:
                catch(异常类名1 | 异常类名2 | ...   变量名)

7.Throwable的三个方法
        getMessage() -- 获取异常的消息字符串
        toString() -- 全路径异常的类名:消息字符串
        printStackTrace() -- 把异常的详细信息打印到控制台
       
8、加入finally 语句
        try {
                // 可能产生异常的代码(尽可能的定位到异常出现的位置)
        } catch (异常类名 变量名) { // Exception
                // 异常处理语句
                // 以后,返回错误页面等等。暂时显示异常。
        } finally {
                // 释放资源
        }
       
        finally 有和没有的区别:
        假设,如果有必需要执行的程序,放在finally中就一定会执行。
        但是如果不放在finally中,假设这个时候出现的异常是没有被捕获到的,那么程序就会死掉,从而导致必须要执行的代码没有被执行到!

9.总结异常处理两种方式:
       
        抛出异常 -- 在方法上声明异常 : throws 异常类名
       
        try...catch 处理
       
        如果知道怎么处理,一般建议处理。不知道了,抛。
                               
10.自定义异常
        自定义一个类,继承Exception 或者 RuntimeException 。提供带参(String)构造。
        工作中一般都继承自RuntimeException
       
        在可能出现这个异常的代码处,做异常处理时,抛出此异常。 -- 关键字 throw
                               
11. finally 面试题
        final,finally,finalize的区别?
       
        final 关键字:
       
        finalize 是Object类中的一个方法,当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
       
        gc -- 垃圾回收器
       
        finally: 是异常处理机制的一部分。常用用来释放资源。
                finally里面的代码总会执行。(除非虚拟机退出了。 -- 在finally代码前执行了exit() 方法 或者恰好断电了)
                return前还是后呢? 在return 之间. 也就是说如果程序执行到了return语句。 那么程序就已经找到了返回路径。 再去执行finally 语句。执行完再回到之前的返回路径。
               
12.IO流
        数据传输
       
        分类:
                按流向分(站在程序的角度)
                        输入流
                        输出流
                按操作的文件类型分:
                        字节流:
                        字符流:处理文本文件(windows自带记事本可以打开并且不乱码的文件)
               
13. File
        构造方法:
                File(String pathname)
                        通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
                File(String parent, String child)
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
                File(File parent, String child)
          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

        File创建功能
                创建文件:boolean createNewFile()  -- 如果存在,则不创建,返回false。要求文件的父目录必须存在。
               
                创建文件夹: boolean mkdir() -- 创建单级目录, 如果存在,则不创建,返回false
                                        boolean mkdirs() -- 创建多级目录。
                注意问题:想创建文件还是文件夹,一定要明确。
               
        File的删除一定要注意:删除你新创建的拿来练习的东西。File的删除不走回收站。
                删除 delete() -- 删除文件或者文件夹(文件夹下如果有东西,删除失败)
       

        File的判断功能
                boolean exists()
                boolean isFile()
                boolean isDirectory()
                boolean isAbsolute()
                boolean canRead()
                boolean canWrite()
                boolean isHidden()
       
        File的获取功能
                getAbsolutePath()
                getPath() -- 目前咱们的java项目,相对路径到项目的跟路径。
                getName() -- 带后缀的文件名
                length() -- 文件大小 字节数
                lastModified() -- 最后修改时间 -- 毫秒值
               
                重要获取:
                        static File[] listRoots() -- 系统根目录
                        String[] list() -- 返回指定目录下的所有文件(夹)的名称数组
                        File[] listFiles() -- 返回指定目录下的所有文件(夹)的对象数组

                文件名称过滤器        FilenameFilter -- accept(File dir, String name)




       
               
补充:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理               
               
               

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马