错误处理
更新时间:2019-11-15
异常处理
TableStorage异常有如下两种:
异常方法 | 说明 |
---|---|
BceClientException | 客户端异常,客户端异常表示客户端尝试向TableStorage发送请求以及数据传输时遇到的异常。 例如,当输入不合法时,会抛出ClientException;当发送请求时网络连接不可用时,也会抛出 ClientException。 |
BceServerException | 服务器异常,当TableStorage服务端出现异常时,TableStorage服务端会返回给用户相应的错误信息,以便定位问题。常见服务端异常可参见错误码。 |
用户可以使用try获取某个事件所产生的异常,例如:
Plain Text
1TableStorageClient client = new TableStorageClient(conf, INSTANCE_NAME, false);
2ListTablesResponse response = null;
3try{
4 response = client.listTables(new ListTablesRequest());
5} catch (BceServiceException bse) {
6 System.out.println("Caught an tablestorage, which means your request made it "
7 + "to tablestorage, but was rejected with an error responseContent for some reason.");
8 System.out.println("Error Message: " + bse.getMessage());
9 System.out.println("HTTP ErrorDescription Code: " + bse.getStatusCode()); //获取http状态码
10 System.out.println("tablestorage Error Code: " + bse.getErrorCode()); //获取TableStorage错误码
11 System.out.println("tablestorage Error Message: " + bse.getErrorMessage()); //获取TableStorage错误信息
12 System.out.println("Error Type: " + bse.getErrorType()); //获取错误类型
13 System.out.println("Request ID: " + bse.getRequestId()); //获取request id
14 bse.printStackTrace();
15} catch (BceClientException bce) {
16 System.out.println("Caught an TableStorageClientException, which means the client encountered "
17 + "a serious internal problem while trying to communicate with TableStorage, "
18 + "such as not being able to access the network.");
19 System.out.println("Error Message: " + bce.getMessage());
20 bce.printStackTrace();
21} catch (Exception e) {
22 e.printStackTrace();
23} finally {
24 client.shutdown();
25}
SDK日志配置
logback配置
TableStorage Java SDK发布版本中使用logback作为slf4j的实现,使用时需要在classpath中配置logback.xml,详细内容可以参考如下配置。如果没有这个配置文件,日志级别默认为DEBUG。
Plain Text
1<configuration>
2 <property name="LOG_HOME" value="./log/"/>
3 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
4 <!-- encoders are assigned the type
5 ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
6 <encoder>
7 <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
8 </encoder>
9 </appender>
10
11 <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
12 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
13 <FileNamePattern>${LOG_HOME}/TableStorageUnitTest.%d{yyyy-MM-dd}.log</FileNamePattern>
14 <MaxHistory>30</MaxHistory>
15 </rollingPolicy>
16 <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
17 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
18 </encoder>
19 <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
20 <MaxFileSize>10MB</MaxFileSize>
21 </triggeringPolicy>
22 </appender>
23
24 <root level="info">
25 <appender-ref ref="STDOUT"/>
26 <appender-ref ref="FILE"/>
27 </root>
28</configuration>
自有日志配置
如果需要使用其他实现(如log4j),可以在pom.xml中采用以下配置来去除logback。
Plain Text
1<dependency>
2 <groupId>com.baidubce</groupId>
3 <artifactId>bce-java-sdk</artifactId>
4 <version>${bce.sdk.version}</version>
5 <exclusions>
6 <exclusion>
7 <groupId>ch.qos.logback</groupId>
8 <artifactId>logback-classic</artifactId>
9 </exclusion>
10 <exclusion>
11 <groupId>ch.qos.logback</groupId>
12 <artifactId>logback-core</artifactId>
13 </exclusion>
14 <exclusion>
15 <groupId>org.slf4j</groupId>
16 <artifactId>jcl-over-slf4j</artifactId>
17 </exclusion>
18 </exclusions>
19</dependency>