⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 esexception.java

📁 RESIN 3.2 最新源码
💻 JAVA
字号:
/* * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved * * This file is part of Resin(R) Open Source * * Each copy or derived work must preserve the copyright notice and this * notice unmodified. * * Resin Open Source is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Resin Open Source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty * of NON-INFRINGEMENT.  See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with Resin Open Source; if not, write to the *   Free SoftwareFoundation, Inc. *   59 Temple Place, Suite 330 *   Boston, MA 02111-1307  USA * * @author Scott Ferguson */package com.caucho.es;import com.caucho.java.LineMap;import com.caucho.util.CharBuffer;import java.io.CharArrayWriter;import java.io.IOException;import java.io.OutputStream;import java.io.PrintWriter;/** * JavaScript exception, filtered to get the line numbers right. */public class ESException extends Exception {  public ESException() {}  public ESException(String name) { super(name); }  public ESException(Throwable e) { super(e); }    public static void staticPrintESTrace(Exception e, OutputStream os)  {    CharArrayWriter writer = new CharArrayWriter();    PrintWriter pw = new PrintWriter(writer);        e.printStackTrace(pw);    pw.close();    char []array = writer.toCharArray();    CharBuffer cb = filter(array);    if (os != null) {      byte []b = cb.toString().getBytes();      try {	os.write(b, 0, b.length);      } catch (IOException e1) {      }    } else      System.out.println(cb);  }  public static void staticPrintESTrace(Exception e, PrintWriter os)  {    CharArrayWriter writer = new CharArrayWriter();    PrintWriter pw = new PrintWriter(writer);        e.printStackTrace(pw);    pw.close();    char []array = writer.toCharArray();    CharBuffer cb = filter(array);    if (os != null) {      os.print(cb.toString());    } else      System.out.println(cb);  }  public void printESStackTrace(OutputStream os)  {    staticPrintESTrace(this, os);  }  public void printESStackTrace()  {    printESStackTrace(System.out);  }  public void printESStackTrace(PrintWriter out)  {    CharArrayWriter writer = new CharArrayWriter();    PrintWriter pw = new PrintWriter(writer);        printStackTrace(pw);    pw.close();    char []array = writer.toCharArray();    CharBuffer cb = filter(array);    out.print(cb.toString());  }  /**   * Filter the exception trace to convert *.java line numbers back to   * the *.js name.   */  private static CharBuffer filter(char []array)  {    CharBuffer buf = new CharBuffer();    CharBuffer fun = new CharBuffer();    CharBuffer file = new CharBuffer();    boolean hasJavaScript = false;    int i = 0;    while (i < array.length) {      fun.clear();      file.clear();      int start = i;      int end;      for (end = i; end < array.length && array[end] != '\n'; end++) {      }      for (; i < end && Character.isWhitespace(array[i]); i++) {	fun.append(array[i]);      }      // skip 'at'      for (; i < end && ! Character.isWhitespace(array[i]); i++) {	fun.append(array[i]);      }      if (! fun.endsWith("at")) {	for (i = start; i < end; i++) {	  buf.append(array[i]);	}	i = end + 1;	buf.append('\n');		continue;      }      for (; i < end && Character.isWhitespace(array[i]); i++) {      }      fun.clear();      for (; i < end && ! Character.isWhitespace(array[i]) &&	     array[i] != '('; i++) {	fun.append(array[i]);      }      if (fun.startsWith("com.caucho.es.")) {        i = end + 1;	continue;      }      /*      if (! fun.startsWith("_js.")) {	if (hasJavaScript) {	  i = end + 1;	  continue;	}	for (i = start; i < end; i++) {	  buf.append(array[i]);	}	i = end + 1;	buf.append('\n');		continue;      }      */      if (i < end && array[i] == '(')	i++;      for (; i < end && array[i] != ')'; i++) {	file.append(array[i]);      }      i = end + 1;      if (fun.endsWith(".call"))	continue;      int p = fun.lastIndexOf('.');      String className;      String function;      if (p > 0) {        className = fun.substring(0, p);        function = fun.substring(p + 1);      }      else {        className = "";        function = fun.toString();      }      Global global = Global.getGlobalProto();      LineMap lineMap = global != null ? global.getLineMap(className) : null;      String line = file.toString();      if (lineMap != null) {        p = file.indexOf(':');        if (p > 0) {          try {            String filename = file.substring(0, p);            int lineNo = Integer.parseInt(file.substring(p + 1));            line = lineMap.convertLine(filename, lineNo);          } catch (Exception e) {          }        }        else          line = lineMap.convertLine(file.toString(), 1);      }      buf.append("\tat ");      buf.append(fun);      buf.append("(");      buf.append(line);      buf.append(")");      buf.append("\n");      hasJavaScript = true;    }    return buf;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -