THINK IN JAVA里面的一个例题看不懂 90分答谢解答者

lixiaoxue85 2005-03-30 08:27:11
9.6.2 缺点:丢失的违例
一般情况下,Java的违例实施方案都显得十分出色。不幸的是,它依然存在一个缺点。尽管违例指出程序里存在一个危机,而且绝不应忽略,但一个违例仍有可能简单地“丢失”。在采用finally从句的一种特殊配置下,便有可能发生这种情况:

class VeryImportantException extends Exception {
public String toString() {
return "A very important exception!";
}
}

class HoHumException extends Exception {
public String toString() {
return "A trivial exception";
}
}

public class LostMessage {
void f() throws VeryImportantException {
throw new VeryImportantException();
}
void dispose() throws HoHumException {
throw new HoHumException();
}
public static void main(String[] args)
throws Exception {
LostMessage lm = new LostMessage();
try {
lm.f();
} finally {
lm.dispose();
}
}
}
第一个困惑着么有TRY没CATCH?..而是TRY和FINALLY组合在一起是社么意思?
第二个困惑 我的理解是第一个异常还没来得及离开该程序去执行异常处理而被FINNALLY强制执行了
一个方法,导致第2个异常产生而让JVM无法回到第一个异常抛出点来执行处理?
第三个困惑 是否可以加CATCH?
...全文
322 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
SimonDW 2005-03-31
  • 打赏
  • 举报
回复
finally 字句的作用跟catch不一样,它并不捕捉异常,而是保证不管有没有异常,都能执行
一些操作。这在处理需要资源的地方相当有用。

异常(Exception)丢失并不是因为finally 捕捉了,而是因为在finally字句里把引起异常的类
本身给释放了,所以相应的异常也就没有被处理。

对于public static void main(String[] args) 扔出的异常应该是由JVM截获,
只是没扔出来吧了。
OnlyFor_love 2005-03-31
  • 打赏
  • 举报
回复
楼上讲的非常仔细!
楼主应该能理解了吧!

我的见解和楼上一样!
catch本来就是用来捕捉异常的,不过要是你不知道到底会发生什么异常,那你可以让jvm去捕捉!
那么程序执行到那的时候,jvm就会抛出一个异常,然后执行你的finally中的语句
kingfish 2005-03-31
  • 打赏
  • 举报
回复
//THINK IN JAVA都把异常叫做违反例哦
翻译的问题

//你的意思是说TRY CATCH能被TRY FINNALLY替换?那么TRY FINANLLY和他有一样的作用?
我没说,你理解错。 要是能代替那要2个干吗, catch段异常时才执行

//那么谁来捕获这个异常呢?
JVM
lixiaoxue85 2005-03-30
  • 打赏
  • 举报
回复
THINK IN JAVA都把异常叫做违反例哦
你的意思是说TRY CATCH能被TRY FINNALLY替换?
那么TRY FINANLLY和他有一样的作用?
那么谁来捕获这个异常呢?
kingfish 2005-03-30
  • 打赏
  • 举报
回复
1. try/catch/finally
catch/finally可以只有1个,也可全有。
不管try段有无异常,finally都会执行。

2. 由于finally段又抛出新异常,导致最初的异常无法获得(即“丢失”)

3. 可以


另外,Exception通常翻译为“异常”,不是“违例”
内容概要:本文提出了一种基于粒子群优化算法(PSO)的风光储能微电网日前经济调度模型,创新性地引入需求响应机制,以实现系统运行成本最小化为目标。该模型综合考虑风力发电、光伏发电、储能系统及可调节负荷的运行特性,构建了包含电力供需平衡、设备出力能力、储能容量约束在内的完整数学模型,并通过Python编程实现PSO算法求解,有效提升了新能源消纳水平并降低了购电成本与运行费用。研究不仅实现了多能源协调优化调度,还为高比例可再生能源接入背景下的微电网经济运行提供了可行的技术路径。; 适合人群:具备一定电力系统基础知识和Python编程能力的科研人员、研究生及从事新能源微电网优化调度相关工作的工程技术人员。; 使用场景及目标:①研究含高比例可再生能源的微电网经济调度问题;②掌握粒子群算法在电力系统优化中的建模与应用方法;③开展计及需求响应的多能源协同调度仿真析,探索用户侧灵活性资源参与系统优化的潜力。; 阅读建议:建议读者结合提供的Python代码深入理解算法实现细节,重点关注目标函数构建、约束条件处理及PSO参数设置,可进一步拓展至其他智能优化算法对比析,或引入碳排放、电压稳定性等多目标优化维度进行深化研究。
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 修改自己电脑的OEM信息及产品ID 本文主要讲述了如何修改自己电脑的OEM信息及产品ID,以拥有一个跟正版一样的显示效果。 文章共为两种方法介绍了如何修改OEM信息,别是通过软件进行修改和手动修改注册表信息。 方法一:通过软件进行修改 软件可以帮助用户快速地修改OEM信息,使用非常简单,只要选择想要修改到的厂商就可以了。 然后在高级选项中选择是否要在开始菜单中显示OEM图标和厂商信息。 通过以上步骤,用户的电脑就能拥有一个跟OEM版本一样的信息了! 方法二:手动修改注册表信息 手动修改注册表信息需要用户具备一定的计算机知识和技能。 用户需要上网搜索一张OEM logo或者从另外一台电脑上复制一张logo到自己的电脑上。 然后,用户需要找一个图标文件命名为 OEMLINKICON.ICO,作为支持信息之前的那个小图标。 接下来,用户需要修改个人信息,打开注册表编辑器,搜索到“RegisteredOwner”和“RegisteredOrganization”,这两样别指注册者姓名和注册者单位,修改成自己的就可以了。 然后,用户需要制作“厂商、电脑型号”和“技术支持信息”(如果你的电脑有的话)。 新建一个文本文档,输入[Version]Microsoft Windows Whistler EditionWinVer=5.01[General]Manufacturer=xx(厂商)有限公司Model=xx 系列电脑[Support Information],这是“技术支持信息”的内容。 Line1=""Line2=""Line3=""Li...
内容概要:本文介绍了一项关于“风储VSG-基于虚拟同步发电机的风储并网系统Simulink仿真”的技术研究,重点探讨虚拟同步发电机(VSG)控制策略在风力发电与储能系统联合并网中的应用。通过Simulink搭建风储协同动态模型,引入VSG控制以模拟传统同步发电机的惯性与阻尼特性,有效提升系统在电网扰动下的频率稳定性与电能质量。该仿真系统可用于析风储系统的功率协调控制、动态响应特性及并网稳定性,适用于高比例可再生能源接入背景下的新型电力系统研究与优化设计。; 适合人群:具备电力系统、自动控制或新能源等相关专业背景的研究生、科研人员,以及从事风电并网、储能系统开发与电力电子控制的工程技术人员。; 使用场景及目标:①开展风储联合并网系统的建模与动态仿真研究;②验证VSG控制策略对系统稳定性的提升效果;③用于高校教学演示、科研项目中的VSG原理析与性能评估;④支持学术论文复现、课题创新及先进控制算法的开发与测试; 阅读建议:建议使用者熟悉Simulink建模流程及电力电子变换器控制原理,结合提供的仿真模型进行实操演练,重点关注VSG关键参数(如虚拟惯量、阻尼系数)对系统动态性能的影响,并可进一步拓展至多机并联、孤岛/并网模式切换等复杂运行工况的研究。
代码转载自:https://pan.quark.cn/s/fc0302cd30d9 Vultr root密码重置完全指南:3种方法解决忘记密码的困境 有没有经历过这种崩溃瞬间——深夜登录服务器,SSH连接上了,却发现密码怎么都对不上? 或者刚恢复了一个快照,发现原来的root密码直接失效了,整个人懵在那里…… 别慌,这不是你一个人的问题。 Vultr用户论坛里三天两头就有人在问怎么重置root密码,而且不同系统、不同场景,处理方式还不一样。 这篇文章把所有情况都整理了一遍,照着做基本都能解决。 -- 为什么Vultr的root密码会"失效"? 先搞清楚为什么会发生这种事,才不会下次踩同一个坑。 常见原因大概有这几种: 手动改过密码,但后来忘了——这是最普遍的情况,登录SSH后用改了新密码,结果时间一长就忘了是什么。 从快照恢复后密码失效——Vultr的快照功能很好用,但有时候恢复镜像之后,VPS的root密码会变成镜像里的原始密码,跟你后来设置的完全不同。 VPS系统脚本导致的密码无效——某些自动化部署脚本会在启动时随机生成或清空密码,结果你连知道密码是什么的机会都没有。 新开实例忘记复制初始密码——Vultr在开通VPS后会在控制台显示一次随机生成的初始密码,如果当时没有保存,后来就麻烦了。 知道原因之后,我们来看具体的解决方法。 -- 方法一:知道旧密码的情况下直接修改 这是最简单的情况。 你还能登进去,只是想换一个更好记的密码。 通过SSH修改(推荐,最快) 打开终端,连接到你的服务器: bash ssh root@你的VPS_IP地址 登录成功后,直接输入: bash passwd 系统会要求你输入当前密码,然后两次输入新密码。 输入新密码时屏幕不会显示任何字符...

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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