第7章 异常处理和断言


7
Java异常处理由5个关键字实现:try、catch、throw、throws和finally。 其中try用来执行一段程序,如果出现异常,则系统抛出(throw)一个 异常对象,可以根据该对象的类型来捕获(catch)它并处理它。最后 由 finally 语句块来进行收尾工作。 下面是异常处理块的基本形式: try { // 可能产生异常的代码块 throw new ExceptionType1(); //抛出ExceptionType1类型的异常 } catch(ExceptionType2 e) { // 捕获并处理ExceptionType2类型的异常。该代码段不一定会执行 } catch(ExceptionType3 e) { // 捕获并处理ExceptionType3类型的异常。该代码段不一定会执行 } finally { // 收尾工作,释放资源。该代码段一定会执行 8 }

3
教学重点与难点

重点:
Java异常处理机制; Java内置异常类; 如何自定义异常 如何使用断言

难点: 理解异常处理块中各个语句块的作用
4
1 2 3 4 5 6 7 8 9 10 11
Public class HelloWorld{ public static void main(String args[ ]){ int i=0; String g[ ]={"Hello World!", "Hello!", "HELLO WORLD!"}; while ( i<4){ System.out.println(g[i]); i++; } } }
9
7.1.2 内置异常类
Java异常处理机制是面向对象的。每发生一起异常就产生一 个异常对象。 在Java类库中定义了很多异常类。所有异常类都是类 ng.Throwable 的子类。
Error OutOfMemoryError LinkageError VirtualMachineError StackOverflowError AWTError ArithmeticException NullPointerException RuntimeException IndexOutOfBoundsException ClassNotFoundException Exception
17
finally 语句块
finally语句在异常处理机制中起到收尾工作,用来保证程序 的健壮性。 例如打开一个文件失败,程序处理完异常之后就会退出, 但是文件还没有关闭,这样可能会造成文件的破坏,所以 必须先关闭该文件,才能退出异常的处理。 关闭文件的操作就放在finally语句块中。
Throwable
AWTException
IOException EOFException FileNotFoundException
10
Error
Throwable
RuntimeException
IOException Exception …… ClassNotFoundException
Throwable 类有两个直接子类: ① 子类 Error 代表一些很难恢复的严重的系统错误,不是用户程序本身所能控制的。所以 一般不用捕获与处理Error,而是交给Java 运行系统处理。 ② 子类 Exception 代表用户程序可以捕获的异常情况。 a) 子类 RuntimeException 代表程序设计或实现上的问题,如除数为零或者数组越界等。 这类异常经常出现,如果全部做出处理,会影响程序的可读性和效率。 所以这类异常,程序可以不捕获,而是交给Java 运行系统自动处理。 b) 其他子类 (例如 IOException,ClassNotFoundException 等) 程序中必须捕获并处理这些异常,或者声明抛出。
在传统的编程中,由于没有异常处理机制,一旦出现异常, 程序将中止。 而我们希望程序不要因为一个小错误就停止运行。当错误 发生时,程序能够自动处理,或者能够向用户提供一些与错 6 误相关的信息。
7.1.1 Java 异常处理机制
Java 语言是一种容错性很强的语言,其中引入了异常处 理机制。 Java的异常处理也是面向对象的,当一个异常发生时程 序会生成一个异常对象,称之为抛出(throw)一个异常。 异常处理的核心思想是:捕获(Catch) 经预先判断可能出 错的代码段中可能产生的异常。

例子
import java.io.*; public class E7_1{ public static void main(String args[ ]){ int b; try { FileInputStream fis=new FileInputStream("test.txt"); while ( (b=fis.read()) !=-1) System.out.print((char)b); fis.close(); } catch (Exception e) { system.out.println("出错了,原因是:"); system.out.println (e.toString()); } } }
7.2.2 声明抛弃异常

如果一个方法 method() 中可能产生一个异常,但是 method() 本身又无法处理该异常。 method() 方法可 以声明抛弃该异常,将该异常交给调用它的其他方法 去处理。
20
import java.io.*; public class E7_7 { void method( ) throws FileNotFoundException { FileInputStream f= new FileInputStream("test.txt"); } public static void main(String args[]) { try { E7_7 i=new E7_7(); i.method ( ); } catch (FileNotFoundException e) { System.out.println (e); } } }
18
import java.io.*; public class E7_6 { public static void main(String args[]) { try { int i=7/0; FileInputStream f= new FileInputStream("test.txt"); } catch (ArithmeticException e) { System.out.println (e); } catch (FileNotFoundException e) { System.out.println (e); } finally { System.out.println ("finally"); } } 19 }
Hello World! Hello! HELLO WORLD! ng.ArrayIndexOutOfBoundsException at HelloWorld.main(HelloWorld.java:7)
5
7.1 异常的概念
异常(Exception) 也称为例外,是一种程序运行时的错误。 例如: 试图打开的文件找不到 内存空间不足 除数为零 用户输入数据错误
23
import java.io.*; public class E7_9 { void method( ) throws FileNotFoundException { String s= new String(); if (s.equals("")) throw new FileNotFoundException( ); } public static void main(String args[]) throws FileNotFoundException { E7_9 i=new E7_9(); i.method ( ); } }
回顾
1. String类 2. StringBuffer 类 3. 字符串的比较

1
第七章 异常处理和断言
7.1 异常的概念 7.2 异常处理
7.3 断言
2
教学目的和要求:
理解什么是异常,了解异常发生的原因 掌握Java异常处理的机制 创建自己的异常类 掌握断言的使用
throw new 异常类( );
24
7.2.4 自定义异常除了可以使用系统提供的内置的异常类之外,Java 还允许程序员自己来定义异常类。 自定义的异常类通常继承 Exception 类。
21
import java.io.*; public class E7_8 { void method( ) throws FileNotFoundException { FileInputStream f= new FileInputStream("test.txt"); } public static void main(String args[]) throws FileNotFoundException { E7_8 i=new E7_8(); i.method ( ); } }
11
7.2 异常处理
7.2.1 捕获异常 7.2.2 声明抛弃异常 7.2.3 显示抛出异常 7.2.4 自定义异常

12
7.2.1 捕获异常




捕获异常是通过 try-catch-finally 语句实现的。 try语句不能单独使用,必须和catch或者finally语句配 合使用。 为了防止并处理一个运行时的错误,只需要把可能出 错的代码放进一个try语句块中就可以。 当try语句块中的某条语句发生异常,该块中余下的 语句将不再执行,而是转到catch语句中去执行。
合集下载

尚硅谷_宋红康_第7章_异常处理

尚硅谷_宋红康_第7章_异常处理

7.3 异常处理机制一
捕获异常的有关信息:
与其它对象一样,可以访问一个异常对象的成员变量或调用它的 方法。
getMessage() 获取异常信息,返回字符串 printStackTrace() 获取异常类名和异常信息,以及异常出
现在程序中的位置。返回值void。
异常名称
说明信息
堆栈信息
7.3 异常处理机制一
...... //当产生ExceptionName1型异常时的处置措施 } catch( ExceptionName2 e ){ ...... //当产生ExceptionName2型异常时的处置措施 } [ finally{ ...... //无论是否发生异常,都无条件执行的语句 }]
7.3 异常处理机制一
7.3 异常处理机制一
异常的抛出机制
为保证程序正常执行,代码必须对可能出现的异常进行处理。
7.3 异常处理机制一
如果一个方法内抛出异常,该异常对象会被抛给调用者方法中处 理。如果异常没有在调用者方法中处理,它继续被抛给这个调用 方法的上层方法。这个过程将一直继续下去,直到异常被处理。 这一过程称为捕获(catch)异常。
finally语句和catch语句是任选的
7.3 异常处理机制一
7.3 异常处理机制一:举例
public class IndexOutExp { public static void main(String[] args) { String friends[] = { "lisa", "bily", "kessy" }; try { for (int i = 0; i < 5; i++) { System.out.println(friends[i]); } } catch (ArrayIndexOutOfBoundsException e) { System.out.println("index err"); } System.out.println("\nthis is the end"); }

第7章 异常与断言 教学PPT

第7章 异常与断言 教学PPT
第7章 异常与断言
· 异常处理 · 异常类
· 捕捉异常 · 断言
✎ 学习目标
2 掌握C++中异常处理机制的基本结构、
捕捉异常的方法以及断言的使用 掌握
了解什么是异常
1
熟悉标准库中的
异常处理机制 3
✎ 目录
异常的概念
异常处理
☞点击查看本小节知识架构
异常类
捕捉异常
☞点击查看本小节知识架构
标准库中的异常处理
异常处理语句 }
若函数定义时没有异常规范说明则有可能抛出任意类型的异常,可通 过增加一个能够捕捉所有异常类型的catch结构,来适配各种类型异常。
捕捉所有异常的“catch(…){}”结构,类似于switch中的default结构。 catch(…)语句可以单独使用,也可以与其他catch语句一起使用,与其他
断言
☞点击查看本小节知识架构
✎ 7.1异常的概念
什么是异常?
知识点概述
在C++程序中,常见的错误有两种,语法错误和运行错 误。对于语法错误,可以通过编译系统提示改正。 所谓异常,是指在程序运行过程中,由于系统条件、 操作不当等原因而引起的运行错误。
✎ 7.1异常的概念
案例代码
常见的异常包括除零错误、指针访问受保护空间、数据越 界、分配空间失败、要打开的文件不存在等。接下来通过一个 除零异常的案例来了解系统出现异常的情况
✎ 7.2 异常处理
C语言中异常处理的方式 1、通过函数返回值描述函数运行状态
2、使用errno宏记录错误值,再通过perror()或strerror()函数给出错误提示。
C++异常处理机制
1、抛出异常:若在某一个模块中检测出发生异常,当前模块中无法处理该异 常,将通过抛出异常的方式将包含有异常信息的对象发送到模块外部。 2、捕捉异常:若能够处理该异常,则该模块将获得程序控制权来处理该异常。 3、处理异常:捕捉到异常后,按照一定策略对异常进行处理。 4、标准库中的异常类:标准库中提供了一组异常类在抛出异常和处理异常间 传递信息。

异常处理的方法及常见错误

异常处理的方法及常见错误

异常处理的方法及常见错误一、引言在编写程序的过程中,我们难免会遇到各种意料之外的错误情况。

例如,网络连接中断、用户提供无效的输入、文件读取失败等等。

这有时可能会导致应用程序崩溃或者产生错误结果,影响程序的执行效果和用户体验。

为此,异常处理显得尤为重要。

异常处理是一种有效的、规范的、灵活的代码结构,能够让程序在遇到错误情况时以一种清晰的方式进行处理,从而提高应用程序的可靠性和健壮性。

本文将介绍异常处理的方法及常见错误,在分析各种异常处理的方法以及常见错误之后,让读者更深入的了解异常处理的概念,为读者介绍异常处理的几种常见方法、异常处理的原则、如何确定异常类型和异常的处理方法等知识点。

二、异常处理的方法通常情况下,我们将异常分为两类:编译时异常和运行时异常。

编译时异常通常是由语言本身的规范造成的,例如,不正确的文件名、无效的数据类型等。

而运行时异常则通常由程序的运行环境和输入数据的错误造成的,例如,数组越界、除零错误等等。

基于这两种常见的异常类型,下面将介绍几种常见的异常处理方法:1. try-catch语句try-catch语句是一种非常常见的异常处理方法,在程序运行时,如果try块中出现了异常的情况,程序不会崩溃,而是自动跳转到catch块中进行异常处理。

下面来看一个简单的例子:try {//这里是可能出现异常的代码块} catch (ExceptionType e) {//异常处理代码}在这个例子中,try语句块是一段可能抛出异常的代码。

如果在执行try块时发生了错误,就会跳转到catch块中,其中ExceptionType 代表抛出的异常类型,e是一个指向异常对象的指针。

catch块中的代码则是用来具体处理异常的逻辑。

需要注意的是,在使用try-catch语句处理异常时,我们需要确定具体的异常类型,并在catch块中进行相应的处理。

同时,在使用try-catch语句块的过程中,要注意异常处理代码的构成,尽量避免让异常处理代码过于冗余或过于细节化。

异常处理 相关术语

异常处理 相关术语

异常处理相关术语
异常处理是编程中用于处理程序运行时出现意外情况的一种机制。

以下是与异常处理相关的一些常见术语:
1. 异常:程序执行过程中发生的意外情况或错误,导致程序无法正常执行。

异常可以是语法错误、运行时错误、文件读取错误等。

2. 异常类:用于表示异常的类,每个异常都是异常类的一个实例。

常见的编程语言通常提供内置的异常类,也可以自定义异常类。

3. 异常抛出:当程序中发生异常时,通过 throw 关键字将异常对象抛出,以通知调用方有异常发生。

4. 异常捕获:使用 try-catch 块来捕获异常。

在 try 块中的代码如果发生异常,会跳转到对应的 catch 块中执行。

5. 异常传播:当一个函数内部发生异常,如果没有在该函数内捕获并处理,异常会被传递到函数的调用方,直到被捕获或程序终止。

6. 异常处理策略:指在程序中如何处理异常,可以选择捕获并处理异常、继续向上抛出异常、记录异常信息等。

7. 异常堆栈跟踪:当异常发生时,会生成一个包含异常信息和调用链的堆栈跟踪,用于定位异常发生的位置和原因。

8. 断言:一种用于检查程序中的假设和不变量的语句,如果断言的条件为假,程序会抛出异常。

9. 异常规范:在函数声明中指定函数可能抛出的异常类型,用于告诉调用方该函数可能引发的异常。

10. 调试:在开发过程中使用调试工具来帮助查找和修复异常。

了解这些术语对于理解异常处理的概念和机制非常重要,它们是编程中处理异常情况的基础。

Java中的异常处理和断言机制

Java中的异常处理和断言机制

Java中的异常处理和断言机制在软件开发过程中,我们常常会遇到各种错误和异常情况。

为了保证程序的稳定性和可靠性,Java提供了异常处理和断言机制。

异常处理是一种处理异常情况的方式。

在程序执行过程中,如果出现了异常,系统会抛出相应的异常对象。

我们可以使用try-catch 语句块来捕获并处理这些异常。

try语句块是重点执行的代码块,catch语句块用于捕获并处理指定类型的异常。

如果try语句块中的代码发生了异常,系统会跳过try块中后续的代码,然后进入catch块进行异常处理。

在catch块中,我们可以根据实际需求进行处理,例如输出异常信息、记录日志、回滚事务等。

同时,Java还提供了finally块,用于定义无论是否出现异常,都需要执行的代码。

除了try-catch语句块,我们也可以使用throws关键字来声明异常。

当方法的实现可能会抛出某些异常时,我们可以使用throws关键字在方法签名中声明这些异常。

这样,在调用该方法时,我们必须要么使用try-catch语句块来捕获这些异常,要么在调用方法的上一级方法中继续使用throws关键字声明这些异常。

这种方法使得异常的处理更加灵活,可以将异常的处理逻辑推迟到调用方。

断言机制是一种用于调试和测试的机制。

断言是一种声明,用于在程序中插入一些检查语句,以确保程序的正确性。

在Java中,我们可以使用assert关键字来定义断言。

断言语句由关键字assert、一个boolean表达式和一个可选的消息组成。

当断言语句的结果为false时,系统会抛出一个AssertionError异常。

断言主要用于进行一些前提条件的检查,用于确保程序的正确性,并在出现错误时及早发现和处理。

在调试和测试阶段,我们可以开启断言功能,确保程序按照我们预期的方式执行。

而在生产环境中,我们可以关闭断言功能,从而提高程序的性能。

总之,在Java中,异常处理和断言机制是保证程序稳定性和可靠性的重要工具。

自动化测试中的异常断言与异常处理

自动化测试中的异常断言与异常处理

自动化测试中的异常断言与异常处理异常断言和异常处理在自动化测试中扮演着重要的角色。

通过对异常情况的正确处理,能够保证测试的精确性和准确性,提高软件质量。

本文将介绍自动化测试中的异常断言和异常处理的概念、原则以及常见的应用场景。

一、异常断言的概念与原则在自动化测试中,异常断言是指对测试过程中可能出现的异常情况进行检测和验证。

异常断言主要用来判断程序是否按照预期的方式运行,是否发生了异常或错误。

以下是几个异常断言的基本原则:1.明确定义预期结果:在进行异常断言之前,需要明确定义所期望的结果。

这样可以方便后续对比实际结果与预期结果,以判断是否发生异常。

2.选择合适的断言方式:根据测试的具体情况,选择适合的断言方式。

常见的断言方式有断言语句、断言代码块和断言方法等。

3.标记和报告异常情况:对于发生异常的情况,需要进行标记并生成相应的报告。

这样可以方便后续的分析和问题定位。

二、异常处理的概念与原则异常处理是指在程序运行过程中,针对可能出现的异常情况进行捕获和处理,以使程序能够正常执行或进行相应的异常处理操作。

以下是几个异常处理的基本原则:1.准确确定异常类型:在异常处理中,需要准确确定异常的类型,以便于选择合适的处理方式。

常见的异常类型包括运行时异常和非运行时异常等。

2.及时捕获异常:在程序中,需要及时捕获可能出现的异常。

通过捕获异常,可以防止程序的崩溃或产生不可预料的结果。

3.合理处理异常:对捕获到的异常,需要进行合理的处理。

处理方式可以包括终止程序、抛出新的异常、记录日志和发送通知等。

三、异常断言与异常处理的应用场景1.验证程序的错误处理机制:通过自动化测试,可以模拟程序出现各种异常情况,从而验证程序的错误处理机制是否正确。

例如,在用户输入非法字符时,程序应该给出相应的提示信息,而不是直接崩溃。

2.检测系统稳定性:自动化测试可以模拟大量的请求和操作,通过观察系统在高负载情况下的运行情况,以及处理异常情况的能力,来测试系统的稳定性。

异常和断言


}
catch (Exception1 exVar1) {
handler for exception1;
}
catch (Exception2 exVar2) {
handler for exception2;
}
...
catch (ExceptionN exVar3) {
handler for exceptionN;
6
异常
异常是由Exceptions 类描 述的。 Exceptions 类描 述由程序和外部环境引
起的错误,这些错误能 通过程序捕获和处理。
Exception
Object
Throwable
Error
ClassNotFoundException IOException
AWTException RuntimeException Several more classes
如果父类的catch子句出现在子类的catch子句 之前,就会导致编译错误。 ➢Java强迫程序员处理必检异常。
17
Example 声明、抛出和捕获异常
➢问题:演示声明、抛出和捕获异常。改写 6.10节中的setRadius 方法。
TestCircleWithException CircleWithException Run
IndexOutOfBoundsException IllegalArgumentException Several more classes
VirtualMachineError AWTError
免检异常
Several more classes
10
理解异常处理
捕获异常
method1() {

自动化测试中的异常处理技巧

自动化测试中的异常处理技巧自动化测试是一种快速、高效、精确的测试方式,但是在测试过程中也经常会遇到各种异常情况,如何在自动化测试中处理异常情况,成为了每个测试人员需要掌握的技巧之一。

本文将针对自动化测试中的异常处理技巧进行探讨。

一、常见异常情况在自动化测试过程中,常见的异常情况包括但不限于以下几种:1.元素未找到:由于页面结构的变化或者网络延迟等原因,元素无法被找到,导致测试用例无法继续执行。

2.元素定位错误:测试用例中元素定位错误,导致测试用例执行失败。

3.超时:测试用例执行时间过长,超过了设定的最大时间限制。

4.网络延迟:网络延迟等原因导致测试用例执行失败。

5.页面加载失败:由于网络或者服务器原因,页面无法正常加载,导致测试用例执行失败。

6.接口返回错误:由于接口参数传递错误或者服务器出现异常等原因,接口无法正常返回结果,导致测试用例执行失败。

7.数据库操作失败:由于数据表不存在或者操作权限不足等原因,数据库操作失败,导致测试用例执行失败。

以上异常情况都需要在测试过程中及时处理,否则将导致测试用例无法正常执行或者结果不准确。

二、异常处理技巧针对以上异常情况,下面将介绍不同的异常处理技巧。

1. 异常捕获:在代码中使用try-catch语句对可能出现的异常进行捕获。

例如,在元素定位失败时,可以使用try-catch语句捕获异常,并在catch块中进行相关处理,如输出异常信息、重新进行元素定位等。

2. 隐式等待:在测试用例执行之前进行设置,设置页面元素的最大等待时间,当页面元素未找到时,程序会自动等待设定的时间再进行尝试。

3. 显式等待:在测试用例中设置等待时间,用于等待某些操作完成后再进行下一步操作,如等待页面加载完成、等待元素出现等。

4. 截图:在测试用例执行失败时,可以进行屏幕截图,以便后续分析原因。

在程序出现异常导致测试用例执行失败时,可以通过截图进行分析,快速定位异常所在地。

5. 日志记录:在测试用例执行时添加日志记录,记录每个操作的执行结果和时间等,以便后续排查问题。

自动化测试中的异常情况处理

自动化测试中的异常情况处理自动化测试是一种重要的软件测试方法,通过使用自动化测试工具和脚本来执行测试用例,提高测试效率和准确性。

然而,在实际的测试过程中,往往会遇到各种异常情况。

本文将讨论自动化测试中的异常情况处理方法。

一、异常情况的分类在自动化测试中,异常情况可以分为以下几类:1. 代码错误:这是指在编写测试脚本或自动化测试工具使用过程中出现的错误。

例如,语法错误、逻辑错误等。

2. 环境问题:这是指测试环境出现的问题,如网络不稳定、服务器故障等。

这些问题会导致测试无法正常进行或测试结果不准确。

3. 测试数据异常:测试数据是自动化测试的重要组成部分。

如果测试数据出现异常,可能会导致测试结果不符合预期。

4. 界面变化:在软件开发的过程中,界面的变化是常见的情况。

如果界面发生变化,可能会导致原有的测试脚本无法正常执行。

二、异常情况处理方法在自动化测试中,我们需要采取一些方法来处理异常情况,以确保测试的准确性和稳定性。

以下是一些常用的异常情况处理方法:1. 异常捕获和处理:在编写测试脚本时,可以使用异常捕获和处理机制来捕获测试过程中出现的异常,并采取相应的措施进行处理。

例如,使用try-catch块来捕获异常,并在catch块中执行相应的异常处理逻辑。

2. 断言和异常断言:在测试脚本中,可以使用断言来验证测试的预期结果。

如果测试结果不符合预期,断言会抛出异常,可以在异常处理中对异常进行处理或记录。

这样可以快速发现问题,并进行修复或调试。

3. 环境监控和管理:在自动化测试过程中,需要对测试环境进行监控和管理。

可以使用监控工具实时监测环境的状态,并及时发现并解决问题。

例如,使用监控工具来检测网络的稳定性,并在网络不稳定时暂停测试,等待网络恢复后再继续执行测试。

4. 数据校验和更新:在自动化测试中,测试数据的准确性和一致性对于测试的结果至关重要。

因此,需要定期对测试数据进行校验和更新。

可以使用数据校验工具来检测测试数据的完整性,并根据需要进行数据的更新和修复。

Java中的异常处理与断言

Java中的异常处理与断言在Java编程语言中,异常处理和断言是重要的概念。

异常处理能够帮助开发者在程序运行过程中捕获和处理潜在的错误,而断言则用于在程序开发过程中检查条件是否满足。

本文将详细介绍Java中的异常处理和断言的用法及相关注意事项。

一、异常处理在程序的执行过程中,可能会遇到各种各样的错误,例如输入不合法、文件不存在或者网络连接失败等。

这些错误被称为异常,并且会导致程序的中断或崩溃。

为了避免程序出现不可预料的错误,Java提供了异常处理机制。

Java异常处理机制依赖于以下关键字:try、catch和finally。

通过使用这些关键字,我们可以编写代码来捕获和处理异常。

下面是一个简单的异常处理的示例:```javatry{// 可能导致异常的代码}catch(Exception e){// 处理异常的代码}finally{// 无论是否有异常,都会执行的代码}```在上面的代码中,try块是包含可能抛出异常的代码块。

catch块用于捕获和处理异常。

finally块中的代码无论异常是否发生,都会执行。

不同的异常有不同的类型,例如ArithmeticException、NullPointerException等。

我们可以根据具体的情况来捕获和处理不同类型的异常。

例如:```javatry{// 可能导致异常的代码}catch(ArithmeticException e){// 处理算术异常的代码}catch(NullPointerException e){// 处理空指针异常的代码}catch(Exception e){// 处理其他异常的代码}```在上面的代码中,我们可以看到不同类型的异常分别由不同的catch块来捕获和处理。

最后的catch块可以用来处理未被前面的catch块捕获的异常。

二、断言断言是开发过程中用来检查条件是否满足的一种机制。

在Java中,断言通常用于验证程序是否满足预期的条件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档