1 29 30 package com.caucho.quercus.lib; 31 32 import com.caucho.quercus.Location; 33 import com.caucho.quercus.annotation.ClassImplementation; 34 import com.caucho.quercus.annotation.Optional; 35 import com.caucho.quercus.annotation.This; 36 import com.caucho.quercus.env.Env; 37 import com.caucho.quercus.env.LongValue; 38 import com.caucho.quercus.env.ObjectValue; 39 import com.caucho.quercus.env.StringValue; 40 import com.caucho.quercus.env.StringValueImpl; 41 import com.caucho.quercus.env.Value; 42 43 46 @ClassImplementation 47 public class ExceptionClass { 48 51 public static Value __construct(Env env, 52 @This ObjectValue value, 53 @Optional StringValue message, 54 @Optional("0") int code) 55 { 56 value.putField(env, "message", message); 57 value.putField(env, "code", LongValue.create(code)); 58 59 Location location = env.getLocation(); 60 if (location != null) { 61 if (location.getFileName() != null) 62 value.putField(env, "file", new StringValueImpl(location.getFileName())); 63 else 64 value.putField(env, "file", new StringValueImpl("unknown")); 65 66 value.putField(env, "line", new LongValue(location.getLineNumber())); 67 } 68 69 value.putField(env, "trace", ErrorModule.debug_backtrace(env)); 70 71 return value; 72 } 73 74 77 public static Value getMessage(Env env, @This ObjectValue obj) 78 { 79 return obj.getField(env, "message"); 80 } 81 82 85 public static Value getCode(Env env, @This ObjectValue obj) 86 { 87 return obj.getField(env, "code"); 88 } 89 90 93 public static Value getFile(Env env, @This ObjectValue obj) 94 { 95 return obj.getField(env, "file"); 96 } 97 98 101 public static Value getLine(Env env, @This ObjectValue obj) 102 { 103 return obj.getField(env, "line"); 104 } 105 106 109 public static Value getTrace(Env env, @This ObjectValue obj) 110 { 111 return obj.getField(env, "trace"); 112 } 113 114 117 public static Value getTraceAsString(Env env, @This ObjectValue obj) 118 { 119 return new StringValueImpl("<trace>"); 120 } 121 } 122 | Popular Tags |