在编程语言中,
异常定义了程序中遇到的非致命的错误,比如,程序要打开一个不存的文件、网络连接中断、除零操作、操作数越界、装载一个不存在的类等情况。异常程序是指程序执行一些非法指令,如特权指令,来达到破坏坏系统或程序功能和安全的目的。
简介
异常,也成为内中断,也成为例外或者陷入,指源自CPU执行指令内部的事件,如程序的非法操作码,地址越界,算术溢出、虚存系统的缺页以及专门的陷入指令等引起的。异常程序是指程序执行一些非法指令,异常程序出现的原因有:1、程序设计时出现的编程错误或运行时出现的硬件错误,一般可以通过异常处理解决问题;2、精心设计地入侵系统程序,如病毒。
异常处理
异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)。
各种编程语言在处理异常方面具有非常显著的不同点(错误检测与异常处理区别在于:错误检测是在正常的程序流中,处理不可预见问题的代码,例如一个调用操作未能成功结束)。某些编程语言有这样的函数:当输入存在非法数据时不能被安全地调用,或者返回值不能与异常进行有效的区别。例如,C语言中的atoi函数(ASCII串到整数的转换)在输入非法时可以返回0。在这种情况下编程者需要另外进行错误检测(可能通过某些辅助全局变量如C的errno),或进行输入检验(如通过正则表达式),或者共同使用这两种方法。
通过异常处理,我们可以对用户在程序中的非法输入进行控制和提示,以防程序崩溃。
从进程的视角,硬件中断相当于可恢复异常,虽然中断一般与程序流本身无关。
从子程序编程者的视角,异常是很有用的一种机制,用于通知外界该子程序不能正常执行。如输入的数据无效(例如除数是0),或所需资源不可用(例如文件丢失)。如果系统没有异常机制,则编程者需要用返回值来标示发生了哪些错误。
异常安全
一段代码是异常安全的,如果这段代码运行时的失败不会产生有害后果,如内存泄露、存储数据混淆、或无效的输出。异常安全可分成不同层次:
失败透明(failure transparency),也称作不抛出保证(no throw guarantee):代码的运行保证能成功并满足所有的约束条件,即使存在异常情况。如果出现了异常,将不会对外进一步抛出该异常。(异常安全的最好的层次)
提交或卷回的语义(commit or rollback semantics),或称作强异常安全(strong exception safety)或无变化保证(no-change guarantee):运行可以是失败,但失败的运行保证不会有负效应,因此所有涉及的数据都保持代码运行前的初始值。
基本异常安全(basic exception safety):失败运行的已执行的操作可能引起了副作用,但会保证状态不变。所有存储数据保持有效值,即使这些数据与异常发生前的值有所不同。
最小异常安全(minimal exception safety)也称作无泄漏保证(no-leak guarantee):失败运行的已执行的操作可能在存储数据中保存了无效的值,但不会引起崩溃,资源不会泄漏。
异常不安全(no exception safety):没有保证(最差的异常安全层次)。
系统安全性的内容
系统安全性包括三个方面的内容,即物理安全、逻辑安全和安全管理。物理安全是指系统设备及相关设施受到物理保护,使之免遭破坏或丢失。安全管理包括各种安全管理的政策和机制。逻辑安全是指系统中信息资源的安全,它又包括以下三个方面。
(1) 数据机密性(Data Secrecy):指将机密的数据置于保密状态,仅允许被授权的用户访问计算机系统中的信息(访问包括显示和打印文件中的信息)。
(2) 数据完整性(Data Integrity):指未经授权的用户不能擅自修改系统中所保存的信息,且能保持系统中数据的一致性。这里的修改包括建立和删除文件以及在文件中增加新内容和改变原有内容等。
(3) 系统可用性(System Availability):指授权用户的正常请求能及时、正确、安全地得到服务或响应。或者说,计算机中的资源可供授权用户随时进行访问,系统不会拒绝服务。但是系统拒绝服务的情况在互联网中却很容易出现,因为连续不断地向某个服务器发送请求就可能会使该服务器瘫痪,以致系统无法提供服务,表现为拒绝服务。
病毒
一种人为制造的隐藏在计算机中具有传染力和破坏力的计算机程序或某种密码。它利用信息通道或存储介质,从一个计算机系统传染到另一个计算机系统以至整个计算机网络。它由传染部和行动部两个基本部分组成:传染部决定病毒传播的速度、传染方式和侵袭的范围;行动部决定病毒危害的程度。计算机一旦受到感染,轻则侵占系统资源,降低计算机工作效率,重则破坏程序数据或硬件,甚至使系统瘫痪。
计算机病毒的发源地在美国。1987年以后计算机病毒在全世界广泛传播。中国1989年4月发现第一例计算机病毒——“小球”病毒,此后计算机病毒在国内迅速蔓延。已经发现的多种病毒大部分是通过各种途径从国外传入的,也有中国人自己编写的。
随着计算机网络及信息系统的发展,计算机病毒的传播速度及危害程度越来越大,计算机病毒的生产也向多样化、自动化、密码化和智能化趋势发展,使抗毒工作更加困难。抗计算机病毒的措施主要依靠管理,如不使用、不复制不知底细的软件,采用隔离办法限制病毒传染等。技术上可使用抗计算机病毒的“疫苗”程序,防止计算机病毒的传染;也可用检测、清除软件来清除计算机病毒。计算机病毒的扩散和防治是一个对抗性的领域,必须制订有关法律来防止计算机病毒的进一步扩散。中国由公安部计算机安全监察司负责计算机病毒的防治工作。