Rzucenie wyjątku,a Debug Error.

0

Napisałem sobie taki prosty kod do rysowania kwadratu:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    size = 10; width = 10; height = 10;
    QRgb rgb = (0, 0, 0);
    image = new QImage(size*width, size*height, QImage::Format_RGB32);
    try
    {
        showOneCell(95, 90, size, rgb);
    }
    catch(QString err)
    {
        qDebug()<<err;
    }
    QGraphicsScene *graphic = new QGraphicsScene (this);
    graphic->addPixmap(QPixmap::fromImage(*image));
    ui->graphicsView->setScene(graphic);
}

void MainWindow::showOneCell(int x, int y, int size, QRgb rgb)
{
    if( x>width*size-size )
        throw "x>";
    if( y>height*size-size )
        throw "y>";
    for (int i=x; i<x+size; i++)
    {
        for (int j=y; j<y+size; j++)
            image->setPixel(i, j, rgb);
    }
}

Chciałbym się zabezpieczyć przed podaniem do funkcji showOneCell(int x, int y, int size, QRgb rgb) argumentów x i y, które przekroczą obszar obrazu, dlatego rzucam tu wyjątki.
Wg powyższego kodu, powinien zostać rzucony wyjątek x> i być może zostaje taki rzucony, jednak, gdy chcę uruchomić program wyskakuje mi Debug error!title
Co robię nie tak?

1

Zapewne błąd jest w tym, że rzucasz jakiś generyczny ciąg znaków, a próbujesz złapać konkretnie QString

0

Racja, poprawiłem, teraz jest ok:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    size = 2; width = 10; height = 10;
    QRgb rgb = (0, 0, 0);
    image = new QImage(size*width, size*height, QImage::Format_RGB32);
    try
    {
        showOneCell(10, 3, rgb);
    }
    catch(QString err)
    {
        qDebug()<<err;
    }
    QGraphicsScene *graphic = new QGraphicsScene (this);
    graphic->addPixmap(QPixmap::fromImage(*image));
    ui->graphicsView->setScene(graphic);
}

void MainWindow::showOneCell(int x, int y, QRgb rgb)
{
    if( x>width*size-size )
        throw (QString) "x>";
    if( y>height*size-size )
        throw (QString) "y>";
    for (int i=x*size; i<x*size+size; i++)
    {
        for (int j=y*size; j<y*size+size; j++)
            image->setPixel(i, j, rgb);
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1