作为程序员一定要保持良好的睡眠,才能好编程

定义一个MyHttpException异常类

发布时间:2019-04-26


扩展了Exception 得到一个状态码


<?php
/**
 * Created by PhpStorm.
 * User: DELL
 * Date: 2019/4/21
 * Time: 15:39
 *
 */


class MyHttpException extends Exception {
  private $statusCode;

  /**
   * HttpException constructor.
   * @param int $statusCode
   * @param string $message
   * @param int $code
   * @param $exception
   */
  public function __construct($statusCode, $message = '', $code = 0, $exception = NULL) {
    parent::__construct($message, $code, $exception);
    $this->statusCode = $statusCode;
  }

  /**
   * @return mixed
   */
  public function getStatusCode() {
    return $this->statusCode;
  }

  function tableArray($params) {
    $tableHtml = '<table style=" border:1px dashed #ccc; width: 100%"  cellspacing="0" cellpadding="0">';
    foreach ($params as $k => $v) {
      $tableHtml .= '<tr>';
      if (is_array($v)) {
        $tableHtml .= '<td style="border-bottom :1px dashed #ccc;">' . $k . '</td>' . '<td style="border-left:1px dashed #ccc;" >' . tableArray($v) . '</td>';
      } else {
        $tableHtml .= '<td style="border-bottom:1px dashed #ccc;" >' . $k . '</td>' . '<td style="border-left:1px dashed #ccc;" >' . $v . '</td>';
      }
      $tableHtml .= '</tr>';
    }
    $tableHtml .= '</table>';

    return $tableHtml;
  }

  /**
   * showExceptionInfoWithHtml HTML格式显示异常信息
   *
   * @param \Throwable $e
   *
   * @static static
   * @author JadeSouth <jadesouth@aliyun.com>
   * @date   2018-09-19 20:47:53
   */
  private static function showExceptionInfoWithHtml(\Throwable $e): void {
    /** @var object $e */
   
    $errorType = get_class($e);
    $errorMsg = $e->getMessage();
    $code = $e->getCode();
    $file = $e->getFile();
    $line = $e->getLine();
    $traceString = $e->getTraceAsString();
    $traceString = explode('#', $traceString);
    $traceString = implode('<br />#', $traceString);
    $traceString = substr($traceString, 6);

    $htmlTemplate = '<div style="border:1px dodgerblue;font-size:18px;line-height:2.0em;padding:10px;">' . PHP_EOL;
    $htmlTemplate .= '<div><i>Error Type:</i>&nbsp;&nbsp;<b>%s</b></div>' . PHP_EOL;
    $htmlTemplate .= '<div><i>Error Message:</i>&nbsp;&nbsp;<b>%s</b></div>' . PHP_EOL;
    $htmlTemplate .= '<div><i>Error Code:</i>&nbsp;&nbsp;<b style="color:red;">%d</b></div>' . PHP_EOL;
    $htmlTemplate .= '<div><i>File:</i>&nbsp;&nbsp;<b>%s</b>,&nbsp;on&nbsp;line <b style="color:red;">&nbsp;%s</b>.</div>'
      . PHP_EOL;
    $htmlTemplate .= '<div><div style="margin-top:20px;"><i><b>Stack Trace:</b></i></div>%s</div></div>' . PHP_EOL;

    printf($htmlTemplate, $errorType, $errorMsg, $code, $file, $line, $traceString);


  } 
}