java的异常

java的异常

常见异常:
异常处理机制一:try-catch-finally
异常处理机制二:throws
手动抛出异常:throw
用户自定义异常类

1、什么是异常?

程序执行中发生的不正常情况称为“异常”。
在执行过程中发生的异常分为两大类:
1、Error:java 虚拟机无法解决的严重问题,如:JVM内部错误、资源耗尽等严重情况如StackOveflowError 和OOM等,一般不编写针对性的代码进行处理。
2、Exception:外在因素导致的一般性问题如空指针异常、试图读写不存在的文件、网络连接中断、数组角标越界。
Exception中存在两种异常:编译时异常和运行时异常。

2、如何处理异常?

1、遇到错误终止程序。
2、由程序员编写程序时就考虑到错误的检测,错误的消息提醒,以及错误的处理。

3、异常的体系结构

java.lang.Throwable
-------java.lang.Error
-------java.lang.Exception
--------------编译时异常(Check)
---------------------IOException
-----------------------------FileNotFoundException
---------------------ClassNotFoundException
--------------运行时异常(unCheck)
--------------------NullPointerException
--------------------ArrayIndexOutOfBoundsException
--------------------ClassCastException
--------------------NumberFormatException
--------------------InputMismatchException
--------------------ArithmaticException

异常处理机制一:try-catch-finally

1、“抛”,程序在正常执行的过程中,一旦出现异常,就会在异常代码出生成一个对应异常类的对象。
2、“抓”,异常的处理方式:try-catch-finally 和 throws
格式:
try{
//肯能出现异常的代码
}catch(异常类型 变量名){
//异常处理方式
}catch(异常类型 变量名){
//异常处理方式
}…
finally{
//可选 但加上后一定会执行
}
异常类型一定要子类在上父类在下就是说异常范围由小到大的。
常用的异常处理方法:1String getMessage() 2 printStackTrace()

finally的使用

finally 一定会执行的如当catch 有异常时。
有异常的时候执行顺序时1-2-3-4 return 的是二,没有异常的时候返回的顺序是1-2-3-5 return 的是1,如果finally里有return 只会执行finally里的return。finally中可以写释放资源。

try{
int[] arr=new int[10];//
System.out.println(arr[10])//1
return 1;//5
}catch(ArrayIndexOutOfBoundsException e){
e.printStackTrace();//2
return 2;//4
}finally{
System.out.println("")//3
//return 3;//6
}
垃圾回收机制的关键:回收的是JVM堆内存里的对象空间。
对于其他物理连接、比如数据库、输入流输出流,socket的连接无能为力。
JVM中有多种垃圾回收实现算法、表现各异。
垃圾回收发生具有不可预知性,程序无法精确控制垃圾回收机制。
可以将对象的引用变量设置为空,按时垃圾回收机制可以回收该对象。
程序员可以通过System.gc()或者Runtime.getRuntime().gc()来通知系统进行垃圾回收,会有一些效果,但是系统是否进行垃圾回收依然不确定。
垃圾回收机制回收任何对象之前,总会先调用他的finalize方法如果覆盖该方法,让一个新的引用变量重新引用该对象,则会重新激活对象。

异常处理机制二:throws+异常类型

1、throws + 异常类型写在方法的声明处,指明此方法声明时,可能会抛出的异常。当方法体执行出现异常时,会在代码处生成一个异常类的对象。此对象满足throws 定义的异常类型时,就会抛出,抛出后的代码就不再执行。
2、两个异常处理机制的对比,try -catch 将异常处理了 throws 是将异常跑出去

继承遇到的问题

如果父类没有异常,子类重写异常时不能使用throws.
如果方法a有try-catch a中调用的方法最好加上throws。

手动的抛出异常 throw

public void regist(int id) throws Exception{
if(id >0){
this.id = id;
}else{
throw new Exception(“你输入的数据非法”)
}

}

主要内容:本文详细介绍了一种QRBiLSTM(分位数回归双向长短期记忆网络)的时间序列区间预测方法。首先介绍了项目背景以及模型的优势,比如能够有效利用双向的信息,并对未来的趋势上限和下限做出估计。接着从数据生成出发讲述了具体的代码操作过程:数据预处理,搭建模型,进行训练,并最终可视化预测结果与计算分位数回归的边界线。提供的示例代码可以完全运行并且包含了数据生成环节,便于新手快速上手,深入学习。此外还指出了模型未来发展的方向,例如加入额外的输入特性和改善超参数配置等途径提高模型的表现。文强调了时间序列的标准化和平稳检验,在样本划分阶段需要按时间序列顺序进行划分,并在训练阶段采取合适的手段预防过度拟合发生。 适合人群:对于希望学习和应用双向长短时记忆网络解决时序数据预测的初学者和具有一定基础的研究人员。尤其适用于有金融数据分析需求、需要做多一步或多步预测任务的从业者。 使用场景及目标:应用于金融市场波动预报、天气状况变化预测或是物流管理等多个领域内的决策支持。主要目的在于不仅能够提供精确的数值预计还能描绘出相应的区间概率图以增强结论置信程度。 补充说明:本教程通过一个由正弦信号加白噪构造而成的简单实例来指导大家理解和执行QRBiLSTM流程的所有关键步骤,这既方便于初学者跟踪学习,又有利于专业人士作为现有系统的补充参考工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值