异常处理

如何去判断一套办公系统的好与坏?

落爺英雄遲暮 提交于 2020-03-04 17:36:51
软件系统如何去评定好用与否,其实是一个需要长期去思考的问题。对一个系统好用与否的定义,在一定层面上可以说明使用者对这个系统的定位以及作为这款系统对目标用户的了解程度。企业在选用系统的时候,也要有自己的概念,自己需要的是什么,这些功能实现到什么程度,才是自己的理想值。 前置思考: 首先,在定义优劣之前需要先定义用户期望,只有满足用户需求的系统才有存在的价值,而对用户的满足程度实际上就是我们可以拿来评判优劣的标准了。所以首先必须要明确: 系统是为谁服务的(用户) 用户希望获得什么(价值) 用户害怕什么(痛点) 满足度的评价指标 针对于用户的期望和需求的整理,可以将维度分成以下几个(实际上,大部分的管理类系统都可以从以下几个方面进行评估): 1.1 流程覆盖度 流程线上化是很多管理型系统都需要走的一条很漫长的路,因为几乎后期所有的数据积累、流程优化、智能化都是基于先一步的流程线上化。所以往往各个层级的用户都非常关注流程的搭建。 但同时,这也是一条一不小心就容易走歪的路。经常有用户提线上化需求,在需求价值分析和沟通的过程中,他们往往把“线上化程度提高”作为一个价值点。 不过这真的是价值点吗? 不,切记,流程线上化是途径而不是目的,管理系统并不是单纯为了用键盘代替纸笔。所有线上化的前提是确保流程数据的价值性或者效率的提升点(当然,还有线上化的实施难度)。 此外,在这个过程中

C#中的异常捕获机制(try catch finally)

拈花ヽ惹草 提交于 2020-03-04 17:05:55
(转自:http://blog.csdn.net/zevin/article/details/6901489) 一、C#的异常处理所用到关键字 try 用于检查发生的异常,并帮助发送任何可能的异常。 catch 以控制权更大的方式处理错误,可以有多个catch子句。 finally 无论是否引发了异常,finally的代码块都将被执行。 throw 用于引发异常,可引发预定义异常和自定义异常。 二、C#异常处理的格式 try { 程序代码块; } catch(Exception e) { 异常处理代码块; } finally { 无论是否发生异常,均要执行的代码块; } 三、异常处理实战 一个除数和零的简单例子: 1 public class DivisorIsZero 2 { 3 private static void Main() 4 { 5 int dividend=10; 6 int divisor1=0; 7 int divisor2=5; 8 int DivideValue; 9 10 try 11 { 12 DivideValue=dividend/divisor1; //(1) 13 //DivideValue=dividend/divisor2; //(2) 14 System.Console.WriteLine("DivideValue={0}"

【java基础】异常处理

送分小仙女□ 提交于 2020-03-04 10:58:29
我是 啤酒就辣条,一个Java。 学而时习之,不亦说乎?希望通过博客的形式,总结、分享,梳理自己、帮助他人。 另外,啤酒就辣条,味道不错哦~ 异常的分类 异常是 阻止当前方法或作用域继续执行的问题 。异常分为两种,一种是不可控的 Error ,它有由环境产生的错误,代码层面无法解决的问题,比如 VirtualMachineError (虚拟机资源枯竭时报错)。还有一种是由你代码逻辑产生的 Exception ,是需要通过完善代码避免的错误,比如说 NullPointerException (引用没有具体指向的时候报错) Error 和 Exception 有一个共同的父类 Throwable 。 对于 Exception 可以进一步分为 unchecked 和 checked ,即继承了 RuntimeException 的是 unchecked ,典型的有 NullPointerException ;没有继承 RuntimeException 的是 checked ,典型的有 IOException 。 unchecked 无需在代码里显示的处理,而 checked 需要。 异常的处理 异常处理可以 此时处理 或者 抛给调用者 。 此时处理 可以通过 try{}catch(){} 进行当前处理。 public class ExceptionTest { public static

异常处理及其他

淺唱寂寞╮ 提交于 2020-03-04 07:16:45
异常和错误 part1:程序中你难免出现错误,而错误分为两种 1丶语法错误,(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) 1 #语法错误示范一 2 if 3 4 #语法错误示范二 5 def test: 6 pass 7 8 #语法错误示范三 9 print(haha 10 11 语法错误 2丶逻辑错误 #用户输入不完整(比如输入为空)或者输入非法(输入不是数字) num=input(">>: ") int(num) #无法完成计算 res1=1/0 res2=1+'str' 逻辑错误 part2:什么是异常 异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下 part3:python中的异常种类 在python 中不同的异常可以用不同的类型(python中统一了类与类型,类型既类)去标示,不同的类对象标识不同的异常,一个异常一种错误. l=['egon','aa'] l[3] 触发IndexError dic={'name':'egon'} dic['age' 触发KeyError 触发ValueError AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常;基本上是无法打开文件 ImportError 无法引入模块或包;基本上是路径问题或名称错误

json等序列化模块 异常处理

蹲街弑〆低调 提交于 2020-03-04 02:07:46
今日学习内容如下: 1.序列化模块 什么叫序列化——将原本的字典、列表等内容转换成一个字符串的过程就叫做 序列化 。 比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给? 现在我们能想到的方法就是存在文件里,然后另一个python程序再从文件里读出来。 但是我们都知道,对于文件来说是没有字典这个概念的,所以我们只能将数据转换成字典放到文件中。 你一定会问,将字典转换成一个字符串很简单,就是str(dic)就可以办到了,为什么我们还要学习序列化模块呢? 没错序列化的过程就是从dic 变成str(dic)的过程。现在你可以通过str(dic),将一个名为dic的字典转换成一个字符串, 但是你要怎么把一个字符串转换成字典呢? 聪明的你肯定想到了eval(),如果我们将一个字符串类型的字典str_dic传给eval,就会得到一个返回的字典类型了。 eval()函数十分强大,但是eval是做什么的?e官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果。 BUT!强大的函数有代价。安全性是其最大的缺点。 想象一下,如果我们从文件中读出的不是一个数据结构,而是一句"删除文件"类似的破坏性语句,那么后果实在不堪设设想。 而使用eval就要担这个风险。 所以,我们并不推荐用eval方法来进行反序列化操作(将str转换成python中的数据结构)

SpringBoot优雅的全局异常处理

廉价感情. 提交于 2020-03-03 18:34:54
前言 本篇文章主要介绍的是SpringBoot项目进行全局异常的处理。 SpringBoot全局异常准备 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码。 开发准备 环境要求 JDK :1.8 SpringBoot :1.5.17.RELEASE 首先还是Maven的相关依赖: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.17.RELEASE</version> <relativePath /> </parent> <dependencies> <!-- Spring Boot Web 依赖 核心 -->

Python异常处理

╄→гoц情女王★ 提交于 2020-03-03 15:58:15
异常是一个事件,其中一个程序,破坏程序的指令的正常流的执行过程中而发生的。一般情况下,当一个Python脚本遇到一些情况不能处理,就抛出一个异常。异常是一个Python对象,它表示一个错误。 当Python脚本抛出一个异常,它必须处理异常,否则将立即终止。 处理异常: 如果有可能会引发异常的一些可疑的代码,就可以通过将可疑的代码在一个try块:保卫你的程序。在try块,包括以下情况except:语句,其次是代码,作为优雅的处理问题,尽可能块。 语法 这里是try....except...else 块的简单语法: try: You do your operations here; ...................... except ExceptionI: If there is ExceptionI, then execute this block. except ExceptionII: If there is ExceptionII, then execute this block. ...................... else: If there is no exception then execute this block. 这里有一些关于上述语法要点: 单个try语句可以有多个不同的语句。当try块中包含可能会引发不同类型的异常语句,这是很有用的。

Oracle学习笔记(三)PL/SQL编程

夙愿已清 提交于 2020-03-03 07:27:20
目录 1.PL/SQL简介 PL/SQL块结构 代码注释和标示符 文本 2.数据类型、变量和常量 基本数据类型 特殊数据类型 定义变量和常量 PL/SQL表达式 3.流程控制语句 选择语句 循环语句 1.PL/SQL简介 PL/SQL块结构 PL/SQL程序都是以块(BLOCK)为基本单位,整个PL/SQL块分三部分:声明部分、执行部分和异常处理部分: [DECLARE] --声明部分,可选 BEGIN --执行部分,必须 [EXCEPTION] --异常处理部分,可选 END a.声明部分由关键字DECLARE开始,到BEGIN关键字结束。在这部分可以声明程序块中所用到的变量、常量和游标等。 注意:声明的内容只能在当前PL/SQL块中使用。 b.执行部分以关键字BEGIN开始,结束方式有两种:一是代码在运行时出现异常,则执行完异常处理部分的代码就结束,二是未出现异常或未使用异常处理,则以关键字END结束。执行部分是整个PL/SQL程序块的主体,主要的逻辑控制和运算都在这部分完成。 c.异常处理部分已关键字EXCEPTION开始,在该关键字所包含的代码执行完毕后,整个PL/SQL块也就结束了。异常处理部分用来纠正错误或给用户一些错误信息提示,甚至是将各种数据回退到异常产生之前的状态,多用WHEN THEN实现判断。 直接举个例子: 定义一个PL/SQL块

异常的保护机制

我是研究僧i 提交于 2020-03-02 12:13:26
以栈作为基础的SEH本身具有很大的危险性,我们可以利用各种手段对栈上SEH节点进行覆盖重写,再次执行异常处理操作时就会将执行权给到了我们用来覆盖的函数上,这实际上在以前是很常见的windows栈溢出手段,当然,除了这种方法外还有许许多多的利用手段,可见这样的异常处理机制还是不够完善的。为了解决这些问题,微软逐步加入了Safe SEH、SEHOP、VCH等来弥补。 Safe SEH SafeSEH又叫做软件DEP,是一种在软件层面实现的对SEH的保护机制,它需要操作系统和编译器的双重支持,在vs2013及以后的版本中会自动启用 /SafeSEH 链接选项来使用SafeSEH。也正是因为该项技术使得以往简单的覆盖异常处理句柄的漏洞利用几乎失效了 在加载PE文件时,SafeSEH将定位合法的SEH表的地址(如果该映像不支持SafeSEH的话则地址为0),然后是用共享内存中的一个随机数进行加密处理,程序中所有的异常处理函数的地址提取出来汇总放入SEH表,并将该表放入程序映像中,还会将将加密后的SEH函数表地址,IMAGE的开始地址,IMAGE的长度,合法SEH函数的个数,作为一条记录放入ntdll(ntdll模块是进行异常分发的模块)的加载模块数据内存中,每次调用异常处理函数时都会进行校验,只有二者一致才能够正常进行,该处理由RtlDispatchException() 开始

Java异常处理机制与最佳实践

前提是你 提交于 2020-03-02 09:01:54
  这周小组内的学习是探讨Java异常处理的最佳实践,今天周末,外面太闷,宅在家里对Java的异常处理做一个总结,如有不对的地方欢迎指正~ 一. 谈谈个人对Java异常处理的看法   维基百科对于异常处理的定义是: 异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)。   Java语言从设计之初就提供了对异常处理的支持,并且不同于其它语言,Java对于异常采取了强校验机制,即对于编译期异常需要API调用方显式地对异常进行处理,这种强校验机制被一部分人所钟爱,也有一部分人狂吐槽它。持支持观点的人认为这种机制可以极大的提升系统的稳定性,当存在潜在异常的时候强制开发人员去处理异常,而反对的人则认为强制异常处理降低了代码的可读性,一串串的 try-catch 让代码看起来不够简洁,并且不正确的使用不仅达不到提升系统稳定性的目的,反而成为了bug的良好栖息之地。   Java的异常处理是一把双刃剑,这是我一向持有的观点。个人认为我们不能对Java的异常处理片面的下一个好或者不好的定义,黑格尔说“存在即合理”,既然Java的设计者强制要求我们去处理Java的异常,那么与其在那里吐槽,还不如去学习如何用好Java的异常处理,让其为提升程序的稳定性所服务。不过从笔者的亲身感受来看,用好Java的异常处理门槛并不低! 二.