黑马程序员--异常

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


学习基础过程中经常的遇到的异常总结:

异常:程序出现了不正常的情况。


异常的体系
Throwable

Error:严重 问题,通常出现重大问题如:运行的类不存在或者内存溢出等。是不需要处理的。
一般这种情况是需要修改代码的。
这儿的处理指的是(try{}catch(){}或者throws),出现error这样严重问题的时候
靠处理的方式是解决不了的,必须找出那个地方犯了这么严重的错误,然后修改代码,改正确了之后,
程序才能够运行起来,否则程序绝对运行不起来。
 
Exception:不严重
  1:编译期间:这个是我们需要处理的。(Exception下面 非RuntimeException 的异常)

处理异常的方式有两种:

1)声明异常(就是抛出异常)
在方法声明的后面(即大括号前面):throws 异常类型,不明确要怎么处理的时候

2)try{
  编译期异常代码
    }catch(异常类名 变量名){
  异常处理代码。
    }


  2:运行期间:这个是我们不需要处理,但是也可以处理  (RuntimeException下的异常)

1)如果不处理,java就会用jvm会采用自动的处理方式,
它就把异常的类型,原因,位置直接显示在了控制台。并且退出当前线程(可以理解为退出虚拟机)
同时后面的代码是不能执行的。


2)如果处理,   我们会采用try{}catch(){}
try{
  可能发生问题的代码。
  }catch(异常类名 变量名){
  异常处理代码。
  }



①:一个代码中,有多个问题,怎么解决呢?
 A:一个个用异常处理方案解决。(也就是写多个try{}catch(){})
 B:针对所有问题,写一个try...catch代码。
  try{}catch(){}catch(){}...


针对多个异常,写一个try的代码,catch里面会不会有顺序问题呢?
*如果异常是平级关系,没有顺序问题。
*如果异常存在着子父关系,父一定要放在最后。

写多个catch(){}我们觉得很麻烦这时候就有了JDK7的新特性
JDK7新特性:多个catch用一个catch替代。 不是说多个catch的内容,用一个Exception处理。
 格式:
  catch(异常1 | 异常2 | 异常3 ... 变量名){}


②:我们一直在处理异常的时候都是打印的一句话,虽然我们提示了有错误,但是告诉开发人员是哪一行代码出错了吗?
告诉开发人员是哪个异常了吗?没有吧? 那这样的话,不利于开发人员对代码进行维护,所以我们就有了
标准的异常catch代码,既能打印出异常消息,显示出哪一行出的错,又能不影响后面的代码执行


首先介绍:Throwable中的方法:
  public String getMessage():返回的是异常的消息字符串。
  public String toString():返回异常的简单描述信息。
  全路径类名 : 消息字符串
public void printStackTrace():把错误信息显示在控制台。


学完了printStackTrace()后,就学习了catch标准代码
try{
  可能有问题的代码
}catch(异常类名 变量名){
  变量名.printStackTrace();
}finally{
释放资源代码。(数据库,IO)
}



3)如果处理运行期异常,我们还可以采用Throws 抛出异常,但是我们一般不用

编译期异常:Exception下面 非RuntimeException 的异常
运行期异常:RuntimeException下的异常



3:自定义异常


1)先定义一个类
2)继承Exception或者RuntimeException。
3)写一个有参构造方法
public MyException(String message) {
super(message);
}
4)在不满足条件的代码里面直接throw异常
if (score < 0 || score > 100) {
// System.out.println("分数错误");
MyException my = new MyException("分数不在指定范围内");
throw my;
} else {
System.out.println("分数正确");

}

4:常见的五种异常

1)NullPointerException

经常遇到的“空指针异常”,就是调用了未经初始化的对象或不存在的对象。

2) ClassNotFoundException

“指定的类不存在异常”,类的名称或路径不正确。

3) ArithmeticException

“数学运算异常”,有关的数学运算是否正确,公式是否正确。

4) ArrayIndexOutOfBoundsException

“角标越界异常”,调用的角标超出数组的范围。

5) IIIegalAccessException

“没有访问权限”,当前的方法对该类没有访问权限。

【事件触发一致性】研究多智能体网络如何通过分布式事件驱动控制实现有限时间内的共识(Matlab代码实现)内容概要:本文围绕多智能体网络中的事件触发一致性问题,研究如何通过分布式事件驱动控制实现有限时间内的共识,并提供了相应的Matlab代码实现方案。文中探讨了事件触发机制在降低通信负担、提升系统效率方面的优势,重点分析了多智能体系统在有限时间收敛的一致性控制策略,涉及系统模型构建、触发条件设计、稳定性与收敛性分析等核心技术环节。此外,文档还展示了该技术在航空航天、电力系统、机器人协同、无人机编队等多个前沿领域的潜在应用,体现了其跨学科的研究价值和工程实用性。; 适合人群:具备一定控制理论基础和Matlab编程能力的研究生、科研人员及从事自动化、智能系统、多智能体协同控制等相关领域的工程技术人员。; 使用场景及目标:①用于理解和实现多智能体系统在有限时间内达成一致的分布式控制方法;②为事件触发控制、分布式优化、协同控制等课题提供算法设计与仿真验证的技术参考;③支撑科研项目开发、学术论文复现及工程原型系统搭建; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注事件触发条件的设计逻辑与系统收敛性证明之间的关系,同时可延伸至其他应用场景进行二次开发与性能优化。
【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开,重点研究其动力学建模与控制系统设计。通过Matlab代码与Simulink仿真实现,详细阐述了该类无人机的运动学与动力学模型构建过程,分析了螺旋桨倾斜机构如何提升无人机的全向机动能力与姿态控制性能,并设计相应的控制策略以实现稳定飞行与精确轨迹跟踪。文中涵盖了从系统建模、控制器设计到仿真验证的完整流程,突出了全驱动结构相较于传统四旋翼在欠驱动问题上的优势。; 适合人群:具备一定控制理论基础和Matlab/Simulink使用经验的自动化、航空航天及相关专业的研究生、科研人员或无人机开发工程师。; 使用场景及目标:①学习全驱动四旋翼无人机的动力学建模方法;②掌握基于Matlab/Simulink的无人机控制系统设计与仿真技术;③深入理解螺旋桨倾斜机构对飞行性能的影响及其控制实现;④为相关课题研究或工程开发提供可复现的技术参考与代码支持。; 阅读建议:建议读者结合提供的Matlab代码与Simulink模型,逐步跟进文档中的建模与控制设计步骤,动手实践仿真过程,以加深对全驱动无人机控制原理的理解,并可根据实际需求对模型与控制器进行修改与优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值