|
820 | 820 | ] |
821 | 821 | }, |
822 | 822 | { |
823 | | - "cell_type": "code", |
824 | | - "execution_count": null, |
| 823 | + "cell_type": "markdown", |
825 | 824 | "metadata": { |
826 | 825 | "collapsed": true |
827 | 826 | }, |
828 | | - "outputs": [], |
829 | 827 | "source": [ |
830 | 828 | "---\n", |
831 | 829 | "\n", |
832 | | - "错误处理" |
| 830 | + "###错误处理\n", |
| 831 | + "\n", |
| 832 | + "异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。\n", |
| 833 | + "\n" |
833 | 834 | ] |
834 | 835 | }, |
835 | 836 | { |
836 | 837 | "cell_type": "code", |
837 | | - "execution_count": null, |
| 838 | + "execution_count": 3, |
838 | 839 | "metadata": { |
839 | | - "collapsed": true |
| 840 | + "collapsed": false |
840 | 841 | }, |
841 | | - "outputs": [], |
| 842 | + "outputs": [ |
| 843 | + { |
| 844 | + "name": "stdout", |
| 845 | + "output_type": "stream", |
| 846 | + "text": [ |
| 847 | + "a:a\n" |
| 848 | + ] |
| 849 | + }, |
| 850 | + { |
| 851 | + "ename": "ValueError", |
| 852 | + "evalue": "invalid literal for int() with base 10: 'a'", |
| 853 | + "output_type": "error", |
| 854 | + "traceback": [ |
| 855 | + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", |
| 856 | + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", |
| 857 | + "\u001b[0;32m<ipython-input-3-ec14fac8152b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'a:'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m==\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"you cannot input 0\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m10\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", |
| 858 | + "\u001b[0;31mValueError\u001b[0m: invalid literal for int() with base 10: 'a'" |
| 859 | + ] |
| 860 | + } |
| 861 | + ], |
842 | 862 | "source": [ |
| 863 | + "# 看似健壮的程序,输入字母会报错\n", |
| 864 | + "\n", |
843 | 865 | "a = int(input('a:'))\n", |
844 | 866 | "if a ==0:\n", |
845 | 867 | " print(\"you cannot input 0\")\n", |
|
850 | 872 | }, |
851 | 873 | { |
852 | 874 | "cell_type": "code", |
853 | | - "execution_count": null, |
| 875 | + "execution_count": 5, |
854 | 876 | "metadata": { |
855 | | - "collapsed": true |
| 877 | + "collapsed": false |
856 | 878 | }, |
857 | | - "outputs": [], |
| 879 | + "outputs": [ |
| 880 | + { |
| 881 | + "name": "stdout", |
| 882 | + "output_type": "stream", |
| 883 | + "text": [ |
| 884 | + "a:0\n", |
| 885 | + "except: division by zero\n" |
| 886 | + ] |
| 887 | + } |
| 888 | + ], |
858 | 889 | "source": [ |
| 890 | + "# 防止输入0作为除数\n", |
| 891 | + "\n", |
859 | 892 | "a = int(input('a:'))\n", |
860 | 893 | "try:\n", |
861 | 894 | " r = 10 / a\n", |
|
866 | 899 | }, |
867 | 900 | { |
868 | 901 | "cell_type": "code", |
869 | | - "execution_count": null, |
| 902 | + "execution_count": 7, |
870 | 903 | "metadata": { |
871 | | - "collapsed": true |
| 904 | + "collapsed": false |
872 | 905 | }, |
873 | | - "outputs": [], |
| 906 | + "outputs": [ |
| 907 | + { |
| 908 | + "name": "stdout", |
| 909 | + "output_type": "stream", |
| 910 | + "text": [ |
| 911 | + "a:1\n", |
| 912 | + "result: 10.0\n", |
| 913 | + "finish...\n" |
| 914 | + ] |
| 915 | + } |
| 916 | + ], |
874 | 917 | "source": [ |
| 918 | + "# try...except...finally\n", |
| 919 | + "\n", |
875 | 920 | "a = int(input('a:'))\n", |
876 | | - "dddd\n", |
877 | 921 | "\n", |
878 | 922 | "try:\n", |
879 | 923 | " r = 10 / a\n", |
880 | 924 | " print('result:', r)\n", |
881 | 925 | "except ZeroDivisionError as e:\n", |
882 | 926 | " print('except:', e)\n", |
883 | 927 | "finally:\n", |
884 | | - " print('finish...')\n", |
885 | | - " \n", |
886 | | - "fffff" |
| 928 | + " print('finish...')" |
887 | 929 | ] |
888 | 930 | }, |
889 | 931 | { |
890 | 932 | "cell_type": "code", |
891 | | - "execution_count": null, |
| 933 | + "execution_count": 8, |
892 | 934 | "metadata": { |
893 | | - "collapsed": true |
| 935 | + "collapsed": false |
894 | 936 | }, |
895 | | - "outputs": [], |
| 937 | + "outputs": [ |
| 938 | + { |
| 939 | + "name": "stdout", |
| 940 | + "output_type": "stream", |
| 941 | + "text": [ |
| 942 | + "except name 'c' is not defined\n" |
| 943 | + ] |
| 944 | + } |
| 945 | + ], |
896 | 946 | "source": [ |
| 947 | + "# 防止错误举例\n", |
| 948 | + "\n", |
897 | 949 | "a = 100\n", |
898 | 950 | "try:\n", |
899 | 951 | " b = a + c \n", |
|
904 | 956 | }, |
905 | 957 | { |
906 | 958 | "cell_type": "code", |
907 | | - "execution_count": null, |
| 959 | + "execution_count": 9, |
908 | 960 | "metadata": { |
909 | | - "collapsed": true |
| 961 | + "collapsed": false |
910 | 962 | }, |
911 | | - "outputs": [], |
| 963 | + "outputs": [ |
| 964 | + { |
| 965 | + "name": "stdout", |
| 966 | + "output_type": "stream", |
| 967 | + "text": [ |
| 968 | + "except: name 'c' is not defined\n", |
| 969 | + "100\n" |
| 970 | + ] |
| 971 | + } |
| 972 | + ], |
912 | 973 | "source": [ |
| 974 | + "# 防止错误举例,略完善的做法\n", |
| 975 | + "\n", |
913 | 976 | "a = 100\n", |
914 | 977 | "\n", |
915 | 978 | "try:\n", |
|
919 | 982 | " b = a + 0\n", |
920 | 983 | "print(b)" |
921 | 984 | ] |
| 985 | + }, |
| 986 | + { |
| 987 | + "cell_type": "code", |
| 988 | + "execution_count": 12, |
| 989 | + "metadata": { |
| 990 | + "collapsed": false |
| 991 | + }, |
| 992 | + "outputs": [ |
| 993 | + { |
| 994 | + "name": "stdout", |
| 995 | + "output_type": "stream", |
| 996 | + "text": [ |
| 997 | + "a:a\n", |
| 998 | + "except: invalid literal for int() with base 10: 'a'\n", |
| 999 | + "result: 10.0\n", |
| 1000 | + "finish...\n" |
| 1001 | + ] |
| 1002 | + } |
| 1003 | + ], |
| 1004 | + "source": [ |
| 1005 | + "# 对 int 进行判断\n", |
| 1006 | + "\n", |
| 1007 | + "a = input('a:')\n", |
| 1008 | + "\n", |
| 1009 | + "# 对输入值转换还有更完善的方法\n", |
| 1010 | + "try:\n", |
| 1011 | + " a = int(a)\n", |
| 1012 | + "except ValueError as e:\n", |
| 1013 | + " print('except:', e) \n", |
| 1014 | + "finally:\n", |
| 1015 | + " a = 1\n", |
| 1016 | + "\n", |
| 1017 | + "try:\n", |
| 1018 | + " r = 10 / a\n", |
| 1019 | + " print('result:', r)\n", |
| 1020 | + "except ZeroDivisionError as e:\n", |
| 1021 | + " print('except:', e)\n", |
| 1022 | + "finally:\n", |
| 1023 | + " print('finish...')" |
| 1024 | + ] |
| 1025 | + }, |
| 1026 | + { |
| 1027 | + "cell_type": "code", |
| 1028 | + "execution_count": null, |
| 1029 | + "metadata": { |
| 1030 | + "collapsed": true |
| 1031 | + }, |
| 1032 | + "outputs": [], |
| 1033 | + "source": [] |
922 | 1034 | } |
923 | 1035 | ], |
924 | 1036 | "metadata": { |
|
0 commit comments