• 建立自己的异常类方式


    第一种方式 异常使用工具包,错误码和错误信息,每个项目单独控制,互不影响 

    本次使用laravel5.7 

    1 安装laravel

    2 composer.json里面引入git项目包

    "url": "https://github.com/brady-wang/tool.git"
    "brady/tool": "dev-master"
    {
        "name": "laravel/laravel",
        "type": "project",
        "description": "The Laravel Framework.",
        "keywords": [
            "framework",
            "laravel"
        ],
        "license": "MIT",
        "repositories": {
            "0": {
                "type": "git",
                "url": "https://github.com/brady-wang/tool.git"
            },
            "packagist": {
                "type": "composer",
                "url": "https://mirrors.aliyun.com/composer/"
            }
        },
        "require": {
            "php": "^7.1.3",
            "fideloper/proxy": "^4.0",
            "laravel/framework": "5.8.*",
            "laravel/tinker": "^1.0",
            "brady/tool": "dev-master"
        },
        "require-dev": {
            "beyondcode/laravel-dump-server": "^1.0",
            "filp/whoops": "^2.0",
            "fzaninotto/faker": "^1.4",
            "mockery/mockery": "^1.0",
            "nunomaduro/collision": "^3.0",
            "phpunit/phpunit": "^7.5"
        },
        "config": {
            "optimize-autoloader": true,
            "preferred-install": "dist",
            "sort-packages": true
        },
        "extra": {
            "laravel": {
                "dont-discover": []
            }
        },
        "autoload": {
            "psr-4": {
                "App\": "app/"
            },
            "classmap": [
                "database/seeds",
                "database/factories"
            ]
        },
        "autoload-dev": {
            "psr-4": {
                "Tests\": "tests/"
            }
        },
        "minimum-stability": "dev",
        "prefer-stable": true,
        "scripts": {
            "post-autoload-dump": [
                "Illuminate\Foundation\ComposerScripts::postAutoloadDump",
                "@php artisan package:discover --ansi"
            ],
            "post-root-package-install": [
                "@php -r "file_exists('.env') || copy('.env.example', '.env');""
            ],
            "post-create-project-cmd": [
                "@php artisan key:generate --ansi"
            ]
        }
    }

    2. app下新建目录 Constants

    目录下新建 ErrorCode.php ErrorMsg.php

    <?php
    
    namespace AppConstants;
    
    class ErrorCode
    {
        /**
         * 基本错误码
         */
        const SUCCESS = 200;
        const UNAUTHORIZED = 401;
        const FAIL = 500;
    
    
        const USER_NOT_EMPTY = 10001;
        const PASSWORD_NOT_EMPTY = 10002;
        const PASSWORD_RE_NOT_EMPTY = 10003;
        const EMAIL_NOT_EMPTY = 10004;
    }
    <?php
    namespace AppConstants;
    
    use AppConstantsErrorCode;
    return [
    	ErrorCode::SUCCESS      => '成功' ,
    	ErrorCode::UNAUTHORIZED => '暂无权限!' ,
    	ErrorCode::FAIL         => '失败' ,
    
    	ErrorCode:: USER_NOT_EMPTY        => '用户名不能为空' ,
    	ErrorCode::PASSWORD_NOT_EMPTY         => '请输入密码' ,
    	ErrorCode::PASSWORD_RE_NOT_EMPTY         => '请再次输入密码',
    	ErrorCode::EMAIL_NOT_EMPTY         => '邮箱不能为空',
    
    ];
    

    3.在app下的provider下建立服务提供者  

    ExceptionServiceProvider
    <?php
    /**
     * Created by PhpStorm.
     * User: costa
     * Date: 2019/3/15
     * Time: 14:12
     */
    
    namespace AppProviders;
    
    
    use BradyToolExceptionExceptionResult;
    use IlluminateSupportServiceProvider;
    
    class ExceptionServiceProvider extends ServiceProvider
    {
        /**
         *  注册编码信息
         */
        public function register()
        {
            $tpl = require (dirname(__DIR__) . '/Constants/ErrorMsg.php');
            ExceptionResult::setMsgTemplate($tpl);
        }
    }
    

    4 注册服务提供者到app下的bootstrap下的app文件

     

    $app->register(AppProvidersExceptionServiceProvider::class);
    

    5

    在控制器或者服务里面使用

    <?php
    
    namespace AppHttpControllers;
    
    use AppConstantsErrorCode;
    use BradyToolExceptionExceptionResult;
    use IlluminateHttpRequest;
    
    class RegistorController extends Controller
    {
    
    	public function index()
    	{
    
    
    		try{
    			ExceptionResult::throwException(ErrorCode::USER_NOT_EMPTY);
    		} catch (ExceptionResult $e){
    			dd($e->getMessage());
    		}
    		return view('registor/index');
    	}
    
    	public function registor()
    	{
    		ExceptionResult::throwException("sdfsdfsf",true);
    	}
    } 

     返回结果

    第二种方式,错误码和错误信息也放到工具包 一次设置,多次取用

  • 相关阅读:
    Qt中 .pro 文件和 .pri 文件简介
    [Android Pro] 完美Android Cursor使用例子(Android数据库操作)
    [Android Pro] Android开发实践:自定义ViewGroup的onLayout()分析
    [Android Pro] Android开发实践:为什么要继承onMeasure()
    [Android Pro] Scroller使用分析
    [Android Pro] 精确记录和恢复ListView滑动位置
    [Android Pro] Android TypedValue.applyDimension()的用法
    [Android Pro] http://blog.csdn.net/wuyinlei/article/category/5773375
    [Android Pro] 判断Uri对应的ContentProvider所操作的数据库u存在,及DownloadManager的暂停,继续
    [Android Pro] 完美解决隐藏Listview和RecyclerView去掉滚动条和滑动到边界阴影的方案
  • 原文地址:https://www.cnblogs.com/brady-wang/p/11644672.html
Copyright © 2020-2023  润新知