2014-02-27 31 views
-5

我正在学习Python的异常,我已经试过这样Python异常终于没有工作

try: 
fh = open("testfile", "r") 
fh.write("This is my test file for exception handling!!") 

except IOError: 
print "Error: can\'t find file or read data" 
else: 

    print "Written content in the file successfully" 

finally: 
print "our exceptions are false" 

东西时,我没有finally节我无法找到或读取数据的输出以及时执行的代码我用finally执行代码我收到缩进错误。我不知道为什么会发生这种情况。

+8

由于代码没有正确缩进,您将收到缩进错误。 – bereal

+5

你的帖子在这里也有严重的缩进错误;我们无法确定您实际看到的错误。请发布*精确*代码,然后选择代码块并使用工具栏上的“{}”按钮对其进行格式化。请给我们确切的例外。 –

+0

我只有这个代码,我已经发布在这里.am只是一个初学者在python中..你能告诉我如何使用终于在这里?.. – user3356408

回答

1

看起来您的代码的主要问题是缩进。这是一个可能的解决方案。

Python在某些语句后需要缩进,其中一些是条件语句,循环,异常处理,函数和类,这样代码更易读易懂。

例如,这里是一个函数。只看到代码,你可以看看会发生什么,发生

def f(arg=i): 
    print arg 

“功能”内,并且类似于当你与一个条件,循环工作发生什么,在压痕的不同状态会发生什么“内”循环。

a = ['Mary', 'had', 'a', 'little', 'lamb'] 
for i in range(len(a)): 
    print i, a[i] 

例外有代码块,因为它们表示不同的测试用例。如下所示。

try: 
     x = int(raw_input("Please enter a number: ")) 
     print x 
     break 
    except ValueError: 
     print "Oops! That was no valid number. Try again..." 

代码的缩进的级别称为代码嵌套,你可以用这个类别的多个工作(循环,异常处理,函数和类)时有压痕的多个级别。下面的代码有两个缩进级别。

def fib(n):     1 
    print 'n =', n   2 
    if n > 1:     3 
     return n * fib(n - 1) 
    else:      4 
     print 'end of the line' 
     return 1 

可以工作的解决方案是这样的。

try: 
    fh = open("testfile", "r") 
    fh.write("This is my test file for exception handling!!") 

except IOError: 
    print "Error: can\'t find file or read data" 
else: 
    #I think this should be done here 
    fh.close() 
    print "Written content in the file successfully" 
finally: 
    print "our exceptions are false" 
+0

IT帮助。谢谢很多.. – user3356408

+0

给OP答案和OP没有学到任何东西。| = ^/ –

+0

感谢您的评论,我会改进答案。 – Leonardo

1

这不是最后的问题,而是你的indentation

例如,这样的:

try: 
fh = open("testfile", "r") 
fh.write("This is my test file for exception handling!!") 

它行不通因为Python要求缩进您的代码。你想它看起来是这样的:

try: 
    #every new block is evenly indented 
    fh = open("testfile", "r") 
    fh.write("This is my test file for exception handling!!") 

这现在正确缩进Python(甚至更容易阅读)。您需要在所有类似于以下格式的代码中修复此问题:

#creating new block (try block) 
try: 
    #code 
    #indented 
    #here 
#creating new block (except block) 
except IOError: 
    #handle 
    #error 
#rest of your code