请教一些异常的问题

romanitc 2011-06-28 09:51:33
1:做项目时,在可能出现异常的地方用try catch捕捉, 还是在类后面throws异常??
2:做项目时,在哪些地方应该要用try catch?不近捕捉可以吗?

个人感觉:我写项目时没有注意异常方面,这样合理吗?
...全文
133 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinghen88 2011-06-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 romantic_pk 的回复:]
如果在每一个方法里都加try catch的话,不影响性能吗?还有代码量也增加不少?

引用 3 楼 xinghen88 的回复:
1.个人感觉还是在每个方法中添加try catch比较好一些,在catch可以自己定义输出的一些语句(例如标注是哪个类中哪个方法下的异常)然后加上异常信息(e.getMessages()),这样查找错误的时候比较方便,一看输出的异常信息就能确定哪个方法出的错。
……
[/Quote]
对性能肯定有影响,上面说的不太准确,对于明知道不可能出错的方法当然不用加异常处理。常见的异常无非就是空指针和类型转换错误和数据库连接错误,在使用这些的地方加上就可以了
romanitc 2011-06-28
  • 打赏
  • 举报
回复
你们写项目时都用异常处理吗?具体在哪些地方用?
romanitc 2011-06-28
  • 打赏
  • 举报
回复
如果在每一个方法里都加try catch的话,不影响性能吗?还有代码量也增加不少?[Quote=引用 3 楼 xinghen88 的回复:]
1.个人感觉还是在每个方法中添加try catch比较好一些,在catch可以自己定义输出的一些语句(例如标注是哪个类中哪个方法下的异常)然后加上异常信息(e.getMessages()),这样查找错误的时候比较方便,一看输出的异常信息就能确定哪个方法出的错。
2.还是个人感觉在具体操作(增删改查),或者变量类型转换的地方都添加上异常处理,这样即使有错误也能准确定位,正确处理。
3.不注意异常……
[/Quote]
qybao 2011-06-28
  • 打赏
  • 举报
回复
这个就要看你提供的方法的对异常处理有什么要求了
如果你的方法,是希望别人调用的时候自己处理异常,那么就throws
否则,就自己处理

比如
希望别人处理异常,用户需要保证一些条件才能让你的方法正常执行
如果用户没有确保条件,你就抛出异常,结束处理
void somemethod() throws SomeException {
if (some_exception_occurs_then_method_can_not_continue) {
throw new SomeException(you_must_insure_conditions_to_continue_the_method);
}
}


自己处理异常
用户即使不确保调用方法的条件,你也希望方法继续执行,哪怕不能得到用户期望的结果
void somemethod() {
try {
//do something
} catch (Exception e) {
//you_can_do_something_here_to_handle_the_exception
}
}
空白-键 2011-06-28
  • 打赏
  • 举报
回复
这个要看你具体情况了,比如如果你捕获到的是SessionException(自己定义的异常,没登陆或session过期时抛得异常),这个时候就应该捕获,然后转到登录页面。还有就是数据库异常,这个也应该要捕获,然后转为自己包装的异常类再往上抛,这个时候上一层的方法捕获到这个异常,然后就看你是要继续捕获再包装,还是直接往上抛,很多异常是不捕获的。
xinghen88 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kevin_520_kevin 的回复:]
try..catch主要是在你项目出错的时候不至于一下出现报错页面,但是会影响性能,throws是将捕获的异常再次抛出,可以使得你获得跟多的异常信息
[/Quote]
顶,try catch确实对系统性能有所影响。不过一般不要求过于灵敏的系统用下还是可以的。
小绵羊 2011-06-28
  • 打赏
  • 举报
回复
你有能力处理的错误就是用try catch处理掉,无法处理或者要交给后面处理的就抛出去,不要简单的打印一下堆栈信息就完了
xinghen88 2011-06-28
  • 打赏
  • 举报
回复
1.个人感觉还是在每个方法中添加try catch比较好一些,在catch可以自己定义输出的一些语句(例如标注是哪个类中哪个方法下的异常)然后加上异常信息(e.getMessages()),这样查找错误的时候比较方便,一看输出的异常信息就能确定哪个方法出的错。
2.还是个人感觉在具体操作(增删改查),或者变量类型转换的地方都添加上异常处理,这样即使有错误也能准确定位,正确处理。
3.不注意异常处理肯定不是个好习惯,楼主还是慢慢尝试的添加异常处理吧,等你习惯了你会发现添加异常处理是多么的明智。
kevin_520_kevin 2011-06-28
  • 打赏
  • 举报
回复
try..catch主要是在你项目出错的时候不至于一下出现报错页面,但是会影响性能,throws是将捕获的异常再次抛出,可以使得你获得跟多的异常信息
joaryyu 2011-06-28
  • 打赏
  • 举报
回复
一个方法下有多个可捕获异常,每个异常都捕获,然后再抛出此方法的处理异常。
void method() throws MethodException {
try {
submethod1();
}catch(Submethod1Exception e) {
throw new MethodException("cause by....Submethod1Exception");
}catch(Submethod1Exception2 e) {
throw new MethodException("cause by....Submethod1Exception2");
}
.
.
...
}
内容概要:本文围绕“非线性流量的数据驱动Koopman模型预测控制研究”展开,提出一种基于数据驱动的Koopman算子理论方法,用于构建非线性系统的线性化状态空间模型,并结合模型预测控制(MPC)实现对复杂非线性系统的高效控制。研究通过引入扩展动态模态分解(EDMD)等观测函数,将非线性动力学映射至高维特征空间,在该空间中实现近似线性化表征,进而融合线性MPC框架进行优化求解。全文系统阐述了Koopman算子的数学基础、隐式线性化机制及在非线性流量控制中的建模流程,并通过Matlab代码完成了算法实现与仿真实验,验证了该方法在处理无精确物理模型、强非线性、时变动态系统中的有效性与鲁棒性,尤其适用于工业流程控制、能源系统调度等实际工程场景。; 适合人群:具备自动控制理论、非线性系统分析基础,熟悉Matlab编程,从事控制工程、系统辨识、智能优化、能源系统建模等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于难以建立精确数学模型的复杂非线性系统(如流体动力系统、电力电子系统、机器人动力学等)的建模与实时控制;②实现数据驱动下的模型预测控制,提升系统响应速度与控制精度;③为先进控制策略(如MPC)提供一种可行的线性化建模范式,推动现代控制理论与数据科学、机器学习的深度融合。; 阅读建议:建议读者结合提供的Matlab代码深入理解Koopman方法的具体实现过程,重点关注观测函数构造、核函数选择、矩阵逼近、降维处理及MPC控制器设计等关键技术环节,并尝试将其迁移至其他非线性系统中进行复现实验与性能对比,以全面掌握其适用范围与局限性。
内容概要:本文详细介绍了一种基于Simulink的光伏储能单相逆变器并网仿真模型,系统涵盖了光伏阵列、储能单元、DC-AC单相逆变器及并网接口的完整结构,重点实现了储能环节的能量管理与逆变器并网控制策略的建模仿真。通过Simulink平台构建系统模型,验证了逆变器输出电能质量、并网稳定性以及控制系统的动态响应性能,采用SPWM调制、PI闭环控制等关键技术,确保并网电流与电网电压同频同相,满足并网电能质量要求。该模型不仅可用于分布式能源系统的仿真研究,还可作为新能源并网技术的教学与工程实践工具。; 适合人群:电气工程、自动化、新能源科学与工程等相关专业的高校本科生、研究生、科研人员,以及从事光伏发电系统设计、储能控制与并网技术研发的工程技术人员。; 使用场景及目标:①深入理解光伏储能系统中能量转换、存储与并网控制的整体工作原理;②支持课程设计、毕业设计或科研项目中对单相逆变器控制策略(如SPWM、PI调节、锁相技术等)的仿真验证与参数优化;③为后续研究更复杂的控制算法(如MPPT、低电压穿越、谐波抑制等)提供可扩展的仿真基础平台。; 阅读建议:建议结合MATLAB/Simulink环境动手搭建与调试模型,逐步理解各模块(如光伏建模、储能充放电控制、逆变器驱动、锁相环、PI调节器等)的功能与交互关系,重点关注控制系统的设计逻辑与参数整定过程,并可通过修改负载条件或电网参数测试系统鲁棒性,为进一步拓展至三相系统或多机并网场景奠定基础。

67,536

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧