包和异常代码
如何进行代码部署和上线

如何进行代码部署和上线代码部署和上线是软件开发过程中非常重要的环节,它涉及到将开发的代码从开发环境部署到目标环境,并确保应用程序可以正常运行。
本文将以传统的Web应用程序为例,详细介绍代码部署和上线的过程。
一、代码部署准备阶段在进行代码部署和上线之前,首先需要进行一些准备工作。
1.1配置目标环境准备目标环境,包括服务器、数据库等基础设施的准备和配置。
1.2安装和配置开发环境确保开发环境中已经安装了开发工具和相关软件,例如Git、IDE、编译器等。
1.3编写部署脚本编写部署脚本,用于自动化部署过程中的一些操作,例如编译、打包、上传等。
1.4准备运行所需资源收集和准备运行所需的静态资源、配置文件、依赖库等。
二、代码版本控制和管理代码版本控制是保持代码的稳定和可追溯的一种机制。
常见的版本控制工具有Git、SVN等。
2.1初始化代码仓库创建并初始化一个代码仓库,用于存放代码和版本信息。
2.2创建分支按照开发流程的需要,创建不同的分支,例如主分支、开发分支、测试分支等。
2.3提交代码开发人员将开发完成的代码提交到代码仓库中。
2.4合并代码根据开发分支和代码仓库中其他分支的关系,进行代码合并操作。
2.5打标签在代码达到一个里程碑或稳定版本时,为该版本打上标签,方便追溯和发布。
三、代码构建和打包在进行代码部署和上线之前,需要将代码进行构建、编译和打包。
3.1编译代码根据项目的需求,使用相应的编译工具对代码进行编译。
3.2构建项目根据项目类型和需求,使用构建工具构建项目,生成可执行文件或库文件。
3.3打包应用程序将构建生成的相关文件、依赖库、配置文件等打包成一个可执行的应用程序。
四、依赖管理和安装在代码部署和上线之前,需要准备和安装运行所需的依赖库和组件。
4.1收集依赖库收集项目中所需的依赖库和组件,并记录其版本信息。
4.2安装依赖库通过包管理工具(例如NPM、Pip、Maven等)安装依赖库和组件。
五、部署代码到目标环境完成代码构建、打包和依赖安装之后,将代码部署到目标环境。
python sequential基本原理

一、Python序贯基本原理Python是一种高级编程语言,它具有简单易学、功能强大、代码优雅等特点,因此在工程、科研等领域广泛应用。
在Python中,序贯是一种基本的编程原理,它可以将程序按照一定顺序逐步执行,从而实现复杂的逻辑控制和数据处理。
序贯基本原理包括以下几个方面:二、程序的逐行执行在Python中,程序是按照从上到下、从左到右的顺序逐行执行的。
这种顺序执行的方式保证了程序逻辑的清晰和可控性,使得程序的执行结果可以被准确预测和调试。
三、函数的调用和返回Python中的函数是一个可以重复执行的代码块,它的调用和返回是序贯执行的基本机制。
当程序调用一个函数时,程序的执行流程会跳转到函数体内部执行相应的逻辑,直到函数执行完成并返回结果,程序才会继续按照序列执行的方式继续执行下去。
四、条件语句和循环语句条件语句和循环语句是序贯执行的重要工具,它们可以根据一定的条件来判断程序执行的逻辑分支,并反复执行某一段程序代码,从而实现复杂的逻辑控制和数据处理。
条件语句和循环语句的使用可以大大提高程序的灵活性和可扩展性。
五、异常处理异常处理是程序执行中的一种特殊情况,它可以捕获并处理程序运行时发生的错误,保证程序在出错的情况下可以正常地继续执行。
在Python中,异常处理是序贯执行的一种重要机制,它可以让程序在出现异常时按照事先设计好的逻辑和步骤来处理异常,并继续执行下去。
六、模块和包的引入在Python中,模块和包是一种重要的组织代码结构,它们可以将程序的功能和逻辑分解成一个个独立的模块,再将这些模块按照一定的组织方式组合起来,从而实现复杂的功能和逻辑。
模块和包的引入是程序序贯执行的一种重要方式,它可以让程序按照模块和包的定义和引用来依次执行不同的功能和逻辑。
七、总结在Python中,序贯执行是一种基本的编程原理,它可以保证程序按照一定的顺序逐步执行,从而实现复杂的逻辑控制和数据处理。
程序的逐行执行、函数的调用和返回、条件语句和循环语句、异常处理、模块和包的引入等都是序贯执行的重要机制,它们可以使程序的逻辑清晰、可控性强,从而提高程序的可读性和可维护性。
MicrosoftVBScript编译器错误错误原因代码大全

MicrosoftVBScript编译器错误错误原因代码⼤全Microsoft VBScript 编译器错误错误 '' 缺少语句ActiveServerPages,ASP0126(0x80004005)-->找不到包含⽂件MicrosoftOLEDBProviderforODBCDrivers(0x80040E21)-->sql语句出错(数据类型不匹配或表名(字段名)错误或表处于编辑状态,或表不存在于conn打开的数据库中)MicrosoftOLEDBProviderforODBCDrivers(0x80040E14)-->sql语句出错(字段名错误,或数据类型不匹配) MicrosoftOLEDBProviderforODBCDrivers(0x80040E07)-->sql语句出错(要插⼊或更新的字段的类型与变量数据类型不匹配) MicrosoftOLEDBProviderforODBCDrivers(0x80040E57)-->sql语句出错(要插⼊或更新的数据溢出) MicrosoftOLEDBProviderforODBCDrivers(0x80040E10)-->sql语句出错(update字段名或要更新的数据类型错误) MicrosoftOLEDBProviderforODBCDrivers(0x80004005)-->sql语句出错(要插⼊或更新的字段的数值不能为空值) MicrosoftOLEDBProviderforODBCDrivers(0x80004005) -->打开数据库出错,没有在指定⽬录发现数据库MicrosoftOLEDBProviderforODBCDrivers(0x80040E37)-->没有发现表MicrosoftVBscript运⾏时错误(0x800A000D)-->错误引⽤rs变量(rs对像已关闭或未定义)MicrosoftVBscript运⾏时错误(0x800A01C2)-->vbscript脚本错误(vbscript语句出错)MicrosoftVBscript运⾏时错误(0x800A0006)-->vbscript脚本错误(溢出错误)MicrosoftVBscript编译器错误(0x800A040E)-->缺少loopMicrosoftVBscript编译器错误(0x800A03EA)-->缺少if或endifMicrosoftVBscript编译器错误(0x800A03EE)--> 语句未结束(缺少")")MicrosoftVBscript编译器错误(0x800A03F6)-->if语句出错(缺少endif)MicrosoftVBscript运⾏时错误(0x800A005B)-->缺少setMicrosoftVBscript运⾏时错误(0x800A0005)-->变量未定义MicrosoftVBscript编译器错误(0x800A03F9)-->if语句缺少thenMicrosoftVBscript编译器错误(0x800A0411)-->dim语句定义错误MicrosoftVBscript编译器错误(0x800A0408)-->sql语句错误()Microsoft VBScript 运⾏时错误 (0x800A01B6)错误原因:set rs=server.create......你少了 setADODB.Recordset(0x800A0BB9)-->sql语句出错(sql语句或conn语句未定义或对⼀个rs属性进⾏赋值时发⽣错误) ADODB.Recordset(0x800A0CC1)-->rs对像出错(rs对像本⾝不存在或错误地引⽤了⼀个不存在的字段名)ADODB.Recordset(0x800A0BCD)-->rs对像出错(记录集中没有记录却对记录集进⾏操作)ADODB.Recordset(0x800A0E78)-->rs对像出错(记录集不存在,缺少rs.open语句)ADODB.Recordset(0x800A0CC1) -->rs对像出错(引⽤了⼀个不存在的字段名)ADODB.Recordset(0x800A0E7D)-->conn定义错误ADODB.Recordset(0x800A0CB3)-->数据库以只读⽅式打开,⽆法更新数据如果 VBScript 语句结构违反了⼀个或多个 VBScript 脚本语⾔语法规则,就会产⽣ VBScript 语法错误。
东芝电梯故障代码表【文档版】

起动楼层数与轿厢位置不符合
软体异常(SDZER)
LU,LD 信号 0FF,硬体 DZ ON 而软体 DZ 未检出
MPU 不良
②杂讯干扰
DZ 异常检出(DZERF)
LU,LD 信号 ON,硬体 DZ ON
着床开关 15LS,16LS 不良
HLU 不良
LS1 信号异常检出(LS1ER)
LU,LD 信号 ON,DZ 信号 OFF 而 LS1 信号 ON
1.XAMC1响应回路异常
2.电源异常
3.ACT计时器异常
检测顶楼、 速度大于SDRH,5,6 LS为ON。
底楼减速 1.速度控制不好
故障
2.5,6LS不好(包括尺寸不良)
检测电动 励磁结束后,电机电流下降。用MCU
机电流异 内的VMCC电压检测。
常
1.确认MCU内Id*.VMCC,参 照调
试指南的设定值一览表。
PG 异常或断线
③重新
RESTART 异常检出(ERSTF)
无法再启动。会伴随着 35,36,37,38 之 CODE 显示
RAM CHECK SUM 异常检出(RACEF)
MPU 不良
杂讯干扰该动作
轿厢位置资料异常检出(PLE2C)
轿厢位置资料于同一时间比对而其比对资料错误超过 2 次以上时
MPU 不良
MFDB
AMCE
信号说明 检测条件及故障原因
参照PUSERROR CODE表
检测主电 检测到主电路HSF断开时。检测S相
路HSF的断 保险丝SW。
开
1.主电路短路
2.电源异常
3.ACT计时器不良
4.AMC1和AMC2同时为ON
检测AMC1 从AMC1,AMC2都ON的状态到仅有
简明Python编程规范doc

简明Python编程规范.doc 简明Python编程规范Python是一种高级编程语言,因其简洁、易读、高效而备受青睐。
为了使Python代码更加规范化、易于维护和协作,以下是一些简明的Python编程规范。
1.代码缩进Python使用缩进来表示代码块,因此正确的缩进非常重要。
通常建议使用4个空格作为缩进量,不要使用制表符。
另外,需要确保代码块和函数之间的缩进一致,以保持代码的可读性。
2.行长度为了增加代码的可读性,建议每行代码不超过80个字符。
如果一行过长,可以使用括号或反斜杠将其分成多行。
3.空行在代码中使用适当的空行可以提高可读性。
例如,可以在函数定义和类定义之间、不同功能模块之间或不同段落之间插入空行。
不过,不要在连续的空行之间再添加额外的空行,这会浪费空间并可能导致代码滚动。
4.注释注释对于代码的理解非常重要。
对于复杂的代码块或函数,应该加上注释来解释其功能、参数和返回值等。
注释应该简洁明了,不要使用过多的文字描述。
另外,建议使用Docstrings来为函数和类添加文档字符串,以便于生成文档。
5.变量和函数命名Python中的变量和函数名应该具有描述性,能够清晰地表达其含义。
通常建议使用小写字母和下划线来组成变量和函数名,以使其更具可读性和易于记忆。
同时,变量和函数名应该避免使用Python内置的关键字。
6.模块和包命名Python中的模块和包名称应该具有唯一性,且不应该与Python内置的模块和包名称冲突。
建议使用小写字母和下划线来组成模块和包名称,以便于记忆和维护。
7.导入模块和库在Python中导入模块和库时,应该使用完整的模块和库名称,避免使用相对导入。
同时,应该在代码文件的开头部分进行导入操作,以便于查找和使用。
如果使用了多个导入语句,应该将其分成多行以提高可读性。
8.异常处理在编写Python代码时,应该尽可能地进行异常处理。
异常处理可以避免程序崩溃并提高代码的健壮性。
在处理异常时,应该使用明确的异常处理结构,例如try-except-else-finally语句。
Qt程式异常崩溃处理技巧(Win)

Qt程式异常崩溃处理技巧(Win)这篇⽂章谈的是 Qt4 程式在视窗系统下的异常崩溃处理技巧。
所以须要在头⽂件⾥包括“#include <Windows.h>”。
⾸先,程式难免会有异常崩溃的时候。
重要的是在崩溃时能及时把重要的数据保存好,将损失减少。
SetUnhandledExceptionFilter函数是Win32API的异常捕获函数,在程式异常结束前。
会调⽤该函数注冊的回调函数,这样就能在进程终⽌前运⾏指定的代码,达到⽐如保存数据的功能。
LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException){//程式异常捕获/****保存数据代码****///这⾥弹出⼀个错误对话框并退出程序EXCEPTION_RECORD* record = pException->ExceptionRecord;QString errCode(QString::number(record->ExceptionCode,16)),errAdr(QString::number((uint)record->ExceptionAddress,16)),errMod;QMessageBox::critical(NULL,"程式崩溃","<FONT size=4><div><b>对于发⽣的错误,表⽰诚挚的歉意</b><br/></div>"+QString("<div>错误代码:%1</div><div>错误地址:%2</div></FONT>").arg(errCode).arg(errAdr),QMessageBox::Ok);return EXCEPTION_EXECUTE_HANDLER;}int main(int argc, char *argv[]){QApplication a(argc, argv);QTextCodec::setCodecForTr(QTextCodec::codecForLocale());QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);//注冊异常捕获函数MainWindow w;w.showMaximized();return a.exec();}保存数据仅是拯救措施,更重要的是找到错误的根源。
异常处理的方法及常见错误
异常处理的方法及常见错误一、引言在编写程序的过程中,我们难免会遇到各种意料之外的错误情况。
例如,网络连接中断、用户提供无效的输入、文件读取失败等等。
这有时可能会导致应用程序崩溃或者产生错误结果,影响程序的执行效果和用户体验。
为此,异常处理显得尤为重要。
异常处理是一种有效的、规范的、灵活的代码结构,能够让程序在遇到错误情况时以一种清晰的方式进行处理,从而提高应用程序的可靠性和健壮性。
本文将介绍异常处理的方法及常见错误,在分析各种异常处理的方法以及常见错误之后,让读者更深入的了解异常处理的概念,为读者介绍异常处理的几种常见方法、异常处理的原则、如何确定异常类型和异常的处理方法等知识点。
二、异常处理的方法通常情况下,我们将异常分为两类:编译时异常和运行时异常。
编译时异常通常是由语言本身的规范造成的,例如,不正确的文件名、无效的数据类型等。
而运行时异常则通常由程序的运行环境和输入数据的错误造成的,例如,数组越界、除零错误等等。
基于这两种常见的异常类型,下面将介绍几种常见的异常处理方法:1. try-catch语句try-catch语句是一种非常常见的异常处理方法,在程序运行时,如果try块中出现了异常的情况,程序不会崩溃,而是自动跳转到catch块中进行异常处理。
下面来看一个简单的例子:try {//这里是可能出现异常的代码块} catch (ExceptionType e) {//异常处理代码}在这个例子中,try语句块是一段可能抛出异常的代码。
如果在执行try块时发生了错误,就会跳转到catch块中,其中ExceptionType 代表抛出的异常类型,e是一个指向异常对象的指针。
catch块中的代码则是用来具体处理异常的逻辑。
需要注意的是,在使用try-catch语句处理异常时,我们需要确定具体的异常类型,并在catch块中进行相应的处理。
同时,在使用try-catch语句块的过程中,要注意异常处理代码的构成,尽量避免让异常处理代码过于冗余或过于细节化。
Excel中的VBA错误处理方法与技巧
Excel中的VBA错误处理方法与技巧在使用Excel的VBA编程时,经常会遇到各种错误和异常。
良好的错误处理机制可以帮助我们准确定位和解决问题,提高代码的健壮性和可靠性。
本文将介绍一些常见的VBA错误处理方法和技巧,帮助读者更好地处理Excel中的错误。
首先,我们需要了解几个常见的VBA错误类型。
在VBA中,常见的错误类型有以下几种:1. 运行时错误(Runtime Error):这是最常见的一种错误类型,通常是由于代码逻辑错误、数据类型不匹配等引起的。
2. 语法错误(Syntax Error):通常是因为VBA代码中存在错误的语法或拼写错误导致的。
3. 对象错误(Object Error):当我们尝试引用一个不存在的对象时,会发生这种类型的错误。
4. 输入错误(Input Error):当用户在运行宏时提供了无效或不正确的输入时,会发生这种类型的错误。
5. 系统错误(System Error):这种错误通常是由于系统资源不足或操作系统问题引起的。
接下来,我们将介绍一些VBA错误处理的方法和技巧:1. On Error语句:On Error语句是VBA中用于处理错误的重要语句。
它允许我们在代码执行过程中捕获错误并采取相应的措施。
On Error语句的常见用法是结合GoTo语句,使代码在发生错误时跳转到指定的错误处理代码段。
例如:```vbaSub Example()On Error GoTo ErrorHandler' 代码逻辑Exit SubErrorHandler:MsgBox "发生错误:" & Err.DescriptionEnd Sub```2. Err对象:Err对象是VBA中用于表示错误信息的对象。
它提供了一些属性,可以帮助我们获取有关错误的详细信息。
常用的Err对象属性包括:- Number:表示错误的数字代码。
- Description:表示错误的描述。
JAVA编码规范
第二章重要规范
( 6 )服务端,对关键交易请求要素进行日志输出,交易处理完成后 输出处理结果; ( 7 )和外部系统交互,可将日志输出详细些,日志中尽量包括:请 求地址、内容、http响应码等状态信息、外部系统响应内容等信息; ( 8 )数据库操作,捕获SQLException并对异常进行输出,可增加数 据库操作错误排查; ( 9 )捕获异常后要对异常信息输出ERROR级别的日志,输出示例: logger.error(“XXX操作异常:”+e.getMassage(),e); ( 10 ) ERROR级别日志输出一般原则:对于由于系统原因造成业务 处理失败的事件,需要记录错误日志。非系统原因的业务处理失败, 不应该记录错误日志(推荐使用warn级别),避免错误日志过大,影 响紧急情况下的故障分析和诊断;
第三章命名规范
3、1包命名规则 java开发中产生的包分为两类,一类是与各业务系统相关的 包;另一类是与业务系统无关的、可公用的包。 规则:
包名应全部是小写字母; 包名中不能出现下划线和其他特殊字符; 第一个字母不能是数字。
示例:
与业务系统相关的包命名格式为:com. lianpay.<projectname>.<modulename>
其中:<projectname>为项目英文简称或缩写; <modulename>为模块英文名称或简称,如果无细分模块的话可 省略模块名。
与业务系统无关的、可公用的包:com. lianpay.share.<modulename>//所有项目通用
第三章命名规范
3.2类接口命名规则 规则:
类的名称应使用名词; 类和接口首字母必须大写,每个单词的首字母应大写(骆驼法 则); 接口名称应以大写I开始,接口实现类以Impl结尾。
Mac系统系统崩溃和错误报告分析技巧
Mac系统系统崩溃和错误报告分析技巧Mac 系统崩溃和错误报告分析技巧Mac(Macintosh)操作系统是由苹果公司开发的一款面向个人电脑的操作系统。
尽管Mac系统通常被认为比较稳定和可靠,但有时候用户仍会遇到系统崩溃和错误报告的情况。
今天,我们将探讨一些Mac 系统崩溃和错误报告的分析技巧,以帮助你更好地理解和解决这些问题。
一、了解系统崩溃和错误报告的基础知识系统崩溃是指Mac操作系统无法正常运行并最终停止响应的现象。
当系统崩溃时,操作系统会自动生成错误报告,其中包含了崩溃的详细信息,比如错误代码、崩溃的时间戳以及相关的软件和硬件信息。
错误报告是Mac系统用于记录和排查错误的一种机制。
它提供了关于系统、软件或硬件出现问题的重要信息,有助于开发者识别和修复错误。
错误报告文件通常以.crash后缀结尾,可以在崩溃发生后的系统重新启动后的「控制台」应用程序中找到(位于「实用工具」文件夹下)。
二、分析崩溃日志1. 打开控制台应用程序。
2. 在左侧导航栏中,找到并选择「崩溃报告」选项。
3. 在右侧窗口中,会显示最近的崩溃报告列表。
点击感兴趣的崩溃报告以查看其详细信息。
崩溃报告中包含了大量的信息,对于非专业用户来说可能会有些吃力。
但你可以关注以下几个关键点:- 崩溃原因:崩溃原因的描述通常会在报告的开始部分附近。
它可能是一个特定应用程序、设备驱动程序或系统服务导致的。
- 线程回溯:线程回溯是一个记录了引发崩溃的每个线程的列表。
你可以从中查看每个线程在发生崩溃时所执行的代码,以便更好地理解问题。
- 异常代码:异常代码是一个帮助开发者定位和调试问题的编码系统。
你可以在报告中查找异常代码并进一步搜索相关信息来了解该问题。
- 模块信息:模块信息是指与崩溃相关的软件和硬件组件的列表。
这些模块可能包括操作系统、驱动程序、应用程序等。
查看模块信息可帮助你确定是否有特定的软件或硬件与崩溃有关。
三、使用活动监视器来监测系统性能活动监视器是Mac系统自带的一款工具,可以帮助用户监测和分析系统的性能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
案例的代码如下: //医院接口(Hospital): package hospital_pack; public interface Hospital { //创建一个Hospital接口,它存在于hospital_pack包中 String name="GDPUHospital"; String addr="guangzhou"; public void department(); // 抽象方法 } //内科类(InternalMedicine): package hospital_pack.intermedic; import hospital_pack.Hospital; // 用import导入hospital_pack包中的Hospital类(接口) public class InternalMedicine implements Hospital{ //实现Hospital接口 public void department(){ //实现接口中的抽象方法 System.out.println("本院内科有:消化内科,心内科,肾内科,肿瘤内科,内分泌科,神经内科等"); } } //外科类(SurgicalDepartment): package hospital_pack.surgdepart; import hospital_pack.Hospital; public class SurgicalDepartment implements Hospital{ public void department(){ System.out.println("本院外科有:骨外科,普外科,泌尿外科,脑外科,心胸外科,烧伤外科科等"); } } //运行类(FirstHospital ): package hospital_pack; import hospital_pack.intermedic.InternalMedicine; //导入InternalMedicine类 import hospital_pack.surgdepart.SurgicalDepartment; //导入SurgicalDepartment类 public class FirstHospital { // 此类是运行类,会输出一个具体的内科和外科的信息 public static void main(String[] args) { Hospital hos = new InternalMedicine(); Hospital hos1 = new SurgicalDepartment(); System.out.println("医院名称:"+Hos.name); System.out.println("医院地址:"+Hos1.addr); hos.department(); hos1.department(); } } 从案例描述可知,有医生和病人两种实体,因此要设置病人类(Patient)和医生类(Doctor)。案例中涉及到异常的情况,此处用自定义异常,为此要设置自定义异常类(Wrong)。为了使程序结构清晰,再设置一个运行类(ExceptionCase)。 病人类(Patient)中设四个成员变量,分别是病人的姓名(name)、年龄(age)、挂号标志(id)和患病名称(illness),另外设置一个挂号方法(registration ()),在该方法处应该抛出一个异常。 医生类(Doctor)中设置两个成员变量,分别是诊断病名(treatName)和药物用量(dosage)。另外设置一个诊断方法(treatment(Patient p)),此方法要抛出异常,并在方法内部对各种可能发生异常的情况进行说明。另外,此方法的形式参数为Patient类的对象。 自定义异常类(Wrong)从Exception类继承,在该类的构造方法中,只需简单地调用父类的构造方法,就可以实现案例中的异常提示功能。 运行类(ExceptionCase)中,在调用到诊断方法(treatment(Patient p))和挂号方法(registration ( ))时,要对方法抛出的异常进行异常处理。 下面具体给出案例6-2的代码实现: 病人类(文件名为Patient.java): package proj_6; //建立proj_6包 import wrong.*; // 导入Wrong包 public class Patient { private String name; //定义病人姓名,用private封装 public static int id; //静态变量id,起标志性作用:为0没挂号,非0为已挂号 private int age; //病人的年龄 private String illness; // 患病名称 public Patient(String name,int id,int age,String illness) { //构造方法 this.name=name; this.id=id; this.age=age; this.illness=illness; } public String getName() { return name; } public int getAge() { return age; } public String getIllness() { return illness; } public void registration () throws Wrong{ /* 挂号方法,此方法用throws Wrong抛出一个异常,因此方法内部不作异常处理,而是交给此方法的调用者去处理异常 */ if (id==0) { //如果没挂号,抛出一个自定义异常对象 throw new Wrong("您还没有挂号,请先去挂号!"); } System.out.println("您已挂号,请到医生处就诊!"); } } 医生类(文件名为Doctor.java) package proj_6; import patient.*; import wrong.*; public class Doctor { String treatName; // 医生诊断出的病名 int dosage; // 药物用量 public Doctor(String treatName,int dosage) { //构造方法 this.treatName=treatName; this.dosage=dosage; } public void treatment(Patient p) throws Wrong { //开药方法,抛出一个异常 if(p.id!=0) { //判断是否挂号 System.out.println("患者:"+p.getName()+";"+" 年龄:"+p.getAge()+";"+ " 病情:"+p.getIllness()); if(p.getIllness().equals("支气管肺炎")){ //判断是否为支气管肺炎 if (this.dosage<40 || this.dosage>50) { //判断用药量是否正确 System.out.println("治疗方法:"+treatName+";"+"用量:"+dosage +"万单位每日"); throw new Wrong("用药量不对!请重新开药!注意安全!!"+ "\n支气管肺炎的用量应该在40-50万单位每日"); /*抛出一个自定义异常 */ } } if(p.getIllness().equals("肺炎链球菌肺炎")){ //判断是否为肺炎链球菌肺炎 if (this.dosage<60 || this.dosage>100){ //判断用药量是否正确 System.out.println("治疗方法:"+treatName+";"+"用量:" +dosage+ "万单位每日"); throw new Wrong("用药量不对!请重新开药!注意安全!!\n"+ "肺炎链球菌肺炎的用量应该在60-80万单位每日"); } } if(p.getIllness().equals("金黄色葡萄球菌肺炎")){ if (this.dosage<120 || this.dosage>160){ System.out.println("治疗方法:"+treatName+";"+"用量:"+ dosage+"万单位每日"); throw new Wrong("用药量不对!请重新开药!注意安全!!\n肺炎链 球菌肺炎的用量应该在120-160万单位每日"); } } System.out.println("治疗方法:"+treatName+";"+"用量:"+dosage+"万单位每日"); System.out.println("用药在安全范围内,可确保您的安全,祝早日康复!"); } } } 自定义异常类(文件名为Wrong.java): package proj_6; public class Wrong extends Exception { //自定义异常类Wrong,从Exception类继承 public Wrong(String str) { super(str); } } 运行类(文件名ExceptionCase.java): package proj_6; import doctor.*; import patient.*; import wrong.*; public class ExceptionCase { public static void main(String[] args) { Patient p = new Patient("张三",0,10,"支气管肺炎"); //生成一个Patient对象 try { /* 对挂号方法进行异常处理,此处必须处理异常,因为在registration ( )方 法定义处用throws Wrong语句抛出了一个自定义的Wrong类的异常*/ p. registration ( ); } catch (Wrong w) { // 捕获自定义异常对象w System.out.println(w); //输出自定义异常对象w的信息 } finally { // finally 语句块总会执行 System.out.println("(温馨提示:请遵守医院规定,先挂号,再看医生!)"); } Doctor d= new Doctor("支气管肺炎",60); //生成一个医生对象 try { // 对治疗方法进行异常处理,此处必须要捕获异常 d.treatment(p); } catch (Wrong w1) { System.out.println(w1); } finally { System.out.println("(温馨提示:只有正确的用药,才能保证病人的生命安全!)"); } } }