01Python基础_09异常

  1. try & except

  原程序:

1 import math
2
3 while True:
4     text = raw_input(‘> ‘)
5     if text[0] == ‘q‘:
6         break
7     x = float(text)
8     y = math.log10(x)
9     print "log10({0}) = {1}".format(x, y)

  这段代码接收命令行的输入,当输入为数字时,计算它的对数并输出,直到输入值为 q 为止。

  但是当输入0或者负数时,会报错。

  修改后的程序:

import math

while True:
    try:
        text = raw_input(‘> ‘)
        if text[0] == ‘q‘:
            break
        x = float(text)
        y = math.log10(x)
        print "log10({0}) = {1}".format(x, y)
    except ValueError:
        print "the value must be greater than 0"

  一旦 try 块中的内容出现了异常,那么 try 块后面的内容会被忽略,Python会寻找 except 里面有没有对应的内容,如果找到,就执行对应的块,没有则抛出这个异常。

运行结果:

> -1
the value must be greater than 0
> 0
the value must be greater than 0
> 1
log10(1.0) = 0.0
> q

  捕捉所有类型错误:

  将except 的值改成 Exception 类,来捕获所有的异常。

import math

while True:
    try:
        text = raw_input(‘> ‘)
        if text[0] == ‘q‘:
            break
        x = float(text)
        y = 1 / math.log10(x)
        print "1 / log10({0}) = {1}".format(x, y)
    except Exception:
        print "invalid value"

  运行结果:

> 1
invalid value
> 0
invalid value
> -1
invalid value
> 2
1 / log10(2.0) = 3.32192809489
> q

  进一步完善后的程序:

import math

while True:
    try:
        text = raw_input(‘> ‘)
        if text[0] == ‘q‘:
            break
        x = float(text)
        y = 1 / math.log10(x)
        print "1 / log10({0}) = {1}".format(x, y)
    except ValueError:
        print "the value must be greater than 0"
    except ZeroDivisionError:
        print "the value must not be 1"
    except Exception:
        print "unexpected error"

  运行结果:

> 1
the value must not be 1
> -1
the value must be greater than 0
> 0
the value must be greater than 0
> q

  2. finally

  不管 try 块有没有异常, finally 块的内容总是会被执行,而且会在抛出异常前执行,因此可以用来作为安全保证,比如确保打开的文件被关闭。

try:
    print 1 / 0
finally:
    print ‘finally was called.‘

out: finally was called.

---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-13-87ecdf8b9265> in <module>()
      1 try:
----> 2     print 1 / 0
      3 finally:
      4     print ‘finally was called.‘

ZeroDivisionError: integer division or modulo by zero

  如果异常被捕获了,在最后执行:

try:
    print 1 / 0
except ZeroDivisionError:
    print ‘divide by 0.‘
finally:
    print ‘finally was called.‘

out: divide by 0.
     finally was called.

原文地址:https://www.cnblogs.com/zhangyide/p/8206755.html

时间: 2024-09-07 00:15:07

01Python基础_09异常的相关文章

【Java基础】异常的简单分类与处理

Java中所有的异常都继承自Throwable类,Throwable类的已知子类有Error和Exception. Error是指系统出现的错误,这种错误出现的时候,我们的程序无能为力,所以不需要进行处理. Exception则是在程序中出现的异常,我们通常对这些异常进行处理. Exception有很多的子类,有一类比较特殊,那就是RuntimeException.RuntimeException属于非受检异常,也就是编译器不会对这种异常进行检查,这类异常被允许不用捕捉,也就是不用catch.我

java_基础_异常

之前只是了解的最基础的异常形式,没有过多的深入 今天因为一些原因了解了一下 下面来说说异常的几种形式 1.try-catch语句块 代码示例 class test{ public static void main(String[] args) { try { int a = 1/0; System.out.println(a); }catch(ArithmeticException e) { e.printStackTrace(); System.out.println(e); }finally

[Python基础]008.异常

异常 异常处理 捕获异常 抛出异常 自定义异常 一些常见的异常 异常处理 捕获异常 try/except 与C,java等语言用try/catch来捕获异常相似,Python使用try/except try/except/finally 无论是否有异常都会执行finally下的语句 try/except/else 没有抛出异常时执行else下的语句 代码 try: f = open('data.txt') f.read() print zz print 5/0 except IOError, e

【java基础之异常】死了都要try

目录 1.异常 1.1 异常概念 1.2 异常体系 1.3 异常分类 1.4 异常的产生过程解析 2. 异常的处理 2.1 抛出异常throw 2.2 Objects非空判断 2.3 声明异常throws 2.4 捕获异常try…catch 2.4 finally 代码块 2.5 finally 代码块与return语句 2.6 异常注意事项 3.自定义异常 3.1 概述 3.2 自定义异常练习 4.来!和异常大干一场 @ 1.异常 1.1 异常概念 异常 :简单说就是不正常运行,最终导致JVM

Python 基础6 异常 exception

异常(基础) exception: 异常 是与正常相对的情况: 什么是错误? 错误是指由于逻辑或语法等导致一个程序无法正常执行的问题: 特点: 有此错误是无法预知的: 什么是异常: 异常是指程序出错时标识的一种状态: 当异常发生时,程序不会再向下执行,而转去调用此函数的地方待处理此错误并恢复为正常状态: 作用: 用作信号,通知上层调用者有错误需要处理: try语句: 两种语法: try - except 语句 try - finally 语句 try - except语句语法: 1 try: 2

Java基础笔记-异常总结,包

异常:是对问题的描述,将问题进行对象封装, 异常的体系: Throwable: 1.Error 2.Exception 1.RuntimeException 异常体系的特点: 异常体系中的所有类以及建立的对象都具备可抛性.可以被throw和throws关键字所操作,只有异常体系具备这个特点. throw和throws的用法区别: throw定义在函数内,用于抛出异常对象. throws定义在函数上,用于抛出异常类,可以抛出多个并用逗号隔开. 当函数内容有throw抛出异常对象,并未进行tryca

Java基础笔记-异常

Java中的异常机制: Throwable类是 Java 语言中所有错误或异常的超类.主要包括两个子类: Error和Exception. 一般中要处理的异常是Exception. Java中最常见的处理方式是try catch finally.格式为: try { 需要被检测的异常. } catch(异常类 变量) { 处理异常的代码()处理方式 } finally { 一定会被执行的代码语句 } 一个简单的异常处理代码及有关函数的应用: 1 /* 2 异常:Exception. 3 处理异常

3.3 java基础总结①异常②自定义异常

①异常②自定义异常 一.Java中问题概述一般来说有个2/8原则,一个程序员80% 的精力在处理20%可能发生异常的代码Java中问题分为错误(Error)和异常(Exception) 错误:不能用代码解决的问题,往往是环境或者硬件的问题异常:可通过修改代码或者预处理来解决的不正确情况,称为异常 异常分为编译期异常和运行时异常,如果抛编译异常,语法上调用者必须处理或往上抛:抛运行时异常,调用者可不往上抛 Java里边结束的3中方式:①正常执行完②return返回③发生异常,没有处理,强制结束都是

Java基础:异常捕获顺序

public voidtestException(){ int a[] = {1,2,3};int q = 0; try{ for(int i=0;i<a.length;i++){a[i] /= q;} }catch(ArithmeticException h){ System.out.print("ArithmeticException\n"); //执行 }catch(Exception e){ System.out.print("Exception\n"