黑马程序员——Java基础--- 异常

本文深入讲解Java中的异常处理机制,包括异常定义、异常类型、异常处理流程及自定义异常等内容,并探讨了异常处理的最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


                                                                     ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


首先感谢黑马、感谢素不相识的 毕老师

第三讲    异常

       面向对象,以及封装等特点,同样在java的异常机制里面,异常很好地处理和解决了程序可能出现的问题。

 

一、异常概述

        1、异常定义:错误或者不正常的显现象的产生都回在程序在行时发生这就是异常。

        2、异常产生:将程序问题也当成一个类对象,用这种方式来处里程序运行中出现的错误。

        3、可能存在的异常类型

                3.1、非法的或自定义有问题的参数的错误地输入导致的异常

                3.2、不仅仅是软件还包括硬件也会出现问题,也是异常类

                3.3、在软件运行时设计的要求超出了计算机物理承受,如存储容量不足等           3.4、编写的程序不合法,如参数类型输入不正确等等

 

二、体系

        最主要的是两个方面:

               a是严重的problem;

              b非严重的problem

         a问题也就是很难解决的问题,Error因此这类错误不编写解决问题的方法,更多的是直接停止程序,将问题抛出来

        b类问题的处理,Exception是解决这类问题类。实现了不同的问题的处理和决绝。

         Error、Exception是有相同之处的。

从而也就产生了异常体系:

        Throwable

               //Error  (一般是非常大的问题很难处理的问题:如输入非法参数错误等)

                //Exception (这类一般是运行时出现的problem

                          //R       runtimeException(只抛不声明)

        Exception以及Error的名称都是有规定的:即子后缀为父类名称。还有就是异常皆可抛。

 

 

三、两种异常:

        1、异常编译时出现的

              该异常在编译时,如果没有处理(没有抛也没有try),编译失败。该异常被标识,代表着可以被处理。

         2、异常运行时出现的(编译可通过)

               编译器不需要检测和处理。这就是不解决的异常,程序终止掉,例如RuntimeException体系类。

 

四、异常的处理

1、 这里特殊的语句。

        try

        {

                 (代码)

        }

        catch(异常类  变量)

        {

                 (处理代码)

        }

        finally

        {

                 必运行代码;

        }

三种组合方式:

        1、try

             {

             }

             catch ()

             {

             }

        2、try

             {

             }

             finally

             {

             }  

        3、try

             {

             }

             catch ()

             {

             }

             finally

             {

             } 

特别注意:

        a)资源关闭代码通常定义在finally中,因此资源也完成了释放任务。

        b)当存在必须要执行的代码时,try{}finally{}是最好的的方式,即finally代码一定执行。

        c)需要记住的当到System.exit(0);fianlly就会终止。

2、throwsthrow区别

       

        函数上的是throws,使用逗号想分离的抛出异常类。

        函数内throw异常抛出,当出现为处理的异常。这时必须要声明出来(函数上),避免编译出错。

      其中  RuntimeException是一个例外。函数上不必声明,函数内也可以抛出RuntimeExcpetion异常,。

3、抛出信息的解决

        异常对象在函数内抛出时,这类问题出现时一定要有对应处理方法。一种是try catch,另外就是抛。

        一般情况下,函数内出现异常,函数上需要声明。在功能上通过throws的关键字声明了该功能有可能会出现异常类型。

特殊之处:

         异常一般方法:

        String getMessage();//异常的信息。

        toString();//异常类名以及异常信息。

        printStackTrace();//异常类名加异常信息加异常位置。.

                         

 

五、自定义异常

        当由于项目的特殊的要求,或者根究客户的要求会出现一些特定的异常。因此可以将此类特殊异常封装起来。继承Exception以及RuntimeException。

        a,使其具备可抛性。

        b,具备异常同性。

       

        例:

 

1. class fushuException extends Exception  

2. {  

3.     private String message;  

4.     ZiDingYiException(String message)  

5.     {  

6.         super(message); 

7.      }  

8. }  

class ZiDingYiException extends Exception{ private String msg; ZiDingYiException(String msg) { super(msg);//将会返回输入的信息     }}

自定义异常当需要继承RuntimeException异常时,说明该异常出现时,程序不再运行。            

 

try{         throw new AException();}catch (AException e){         // 对AException处理。         throw new BException();}

 

六、异常的注意事项

        1、问题在内部被解决就不需要声明。

        2、catch是用于处理异常。如果没有catch就代表异常没有被处理,如果该异常是检测时异常。那么必须声明。

        c、继承关系中覆盖:

              1,子类的异常应该是父类异常类型的子类。

              2,当子类覆盖异常放生时,不可抛只可以try的情况:父类无异常抛出异常,


资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 行列式是线性代数的核心概念,在求解线性方程组、分析矩阵特性以及几何计算中都极为关键。本教程将讲解如何用C++实现行列式的计算,重点在于如何输出分数形式的结果。 行列式定义如下:对于n阶方阵A=(a_ij),其行列式由主对角线元素的乘积,按行或列的奇偶性赋予正负号后求和得到,记作det(A)。例如,2×2矩阵的行列式为det(A)=a11×a22-a12×a21,而更高阶矩阵的行列式可通过Laplace展开或Sarrus规则递归计算。 在C++中实现行列式计算时,首先需定义矩阵类或结构体,用二维数组存储矩阵元素,并实现初始化、加法、乘法、转置等操作。为支持分数形式输出,需引入分数类,包含分子和分母两个整数,并提供与整数、浮点数的转换以及加、减、乘、除等运算。C++中可借助std::pair表示分数,或自定义结构体并重载运算符。 计算行列式的函数实现上,3×3及以下矩阵可直接按定义计算,更大矩阵可采用Laplace展开或高斯 - 约旦消元法。Laplace展开是沿某行或列展开,将矩阵分解为多个小矩阵的行列式乘积,再递归计算。在处理分数输出时,需注意避免无限循环和除零错误,如在分数运算前先约简,确保分子分母互质,且所有计算基于整数进行,最后再转为浮点数,以避免浮点数误差。 为提升代码可读性和可维护性,建议采用面向对象编程,将矩阵类和分数类封装,每个类有明确功能和接口,便于后续扩展如矩阵求逆、计算特征值等功能。 总结C++实现行列式计算的关键步骤:一是定义矩阵类和分数类;二是实现矩阵基本操作;三是设计行列式计算函数;四是用分数类处理精确计算;五是编写测试用例验证程序正确性。通过这些步骤,可构建一个高效准确的行列式计算程序,支持分数形式计算,为C++编程和线性代数应用奠定基础
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值